2016-04-11 29 views
0

我是PHP的新手,所以現在我需要驗證模型與靜態變量。Laravel獨特的驗證與路由參數

這是我

class Setting extends Model { 

    protected $table = 'settings'; 

    public static $rules = [ 
     'skey' => 'required|unique:table,id,' . Route::input('settings') 
    ]; 
} 

它拋出以下錯誤:「」 語法錯誤,意想不到的,希望‘]’

好吧,我明白,不能在聲明變量使用。現在

,這是我的問題:

  • 我如何與照亮\ HTTP \要求這樣做,我不希望創建一個新的SettingRequest,可以使用更簡單。
  • 我也不想在控制器中使用存儲或更新方法。我想在這兩種方法創建/更新中使用這種方式。
  • 在PHP中,無論如何創建setter或getter爲C#。
+0

如果打印'路線::得到(「設置」)'你在說什麼? –

+0

它返回路由參數。例如:/ settings/5 => 5 – trinvh

+0

我懷疑'Route :: get('settings')'給你「5」...試試'Request :: input('settings')'。 – PeterPan666

回答

0

你不能這樣做。嘗試在一個方法內做到這一點:

public static function getRules() 
{ 
    return [ 
      'skey' => 'required|unique:table,id,' . Route::input('settings') 
    ]; 
} 
1

你不能這樣做,因爲路易斯說。

我認爲你使用的是L5。更好的做法是使用Request類。

<?php 
    namespace App\Http\Requests; 

    class SettingRequest extends Request 
    { 
     /** 
     * Determine if the user is authorized to make this request. 
     * 
     * @return bool 
     */ 
     public function authorize() 
     { 
      return true; 
     } 

     /** 
     * Get the validation rules that apply to the request. 
     * 
     * @return array 
     */ 
     public function rules() 
     { 
      return [ 
       'skey' => 'required|unique:table,id,' .$this->input('settings') 
      ]; 
     } 
    } 

後,您可以使用SettingRequest類作爲方法的參數在你的控制器是這樣的:

public function update(SettingRequest $request) {} 
public function create(SettingRequest $request) {} 
+0

嗨我說在上面的帖子,假設如果我不想要它,無論如何使PHP中的getter或setter沒有創建新的請求類或用作函數(getRules())? – trinvh