使用Route参数进行Laravel唯一验证

时间:2016-04-11 14:15:38

标签: validation laravel unique getter

我是PHP的新手,所以现在我需要使用静态变量验证模型。

这就是我所拥有的

class Setting extends Model {

    protected $table = 'settings';

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

它会抛出以下错误:语法错误,意外'。',期待']'

好的,我明白不能用于声明变量。

现在,这是我的问题:

  • 如何使用Illuminate \ Http \ Request完成此操作,我不想创建一个更容易使用的新SettingRequest。
  • 我也不想在控制器中使用商店或更新方法。我想在2方法create / update中使用这种方式。
  • 在PHP中,无论如何都要将setter或getter创建为C#。

2 个答案:

答案 0 :(得分:1)

你不能像Luis所说的那样这样做。

我认为你正在使用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) {}

答案 1 :(得分:0)

你不能在那种情况下这样做。尝试在方法中执行此操作:

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