模型中的 Laravel 5 验证

新手上路,请多包涵

我有这样的模型

class test extends Model
{

public   $rules = [
    'title' => 'required',
    'name' => 'required',
];
protected $fillable = ['title','name'];
}

和这样的控制器

public function store(Request $request)
{
    $test=new test; /// create model object
        $validator = Validator::make($request->all(), [
             $test->rules
        ]);
        if ($validator->fails()) {
            return view('test')->withErrors($validator)
        }
        test::create($request->all());
 }

验证显示这样的错误

0 字段是必需的。

我想展示这个

名字的字段是必需的。

标题字段是必需的。

原文由 paranoid 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 425
2 个回答

我解决

public function store(Request $request)
{
  $test=new test; /// create model object
    $validator = Validator::make($request->all(),$test->rules);
    if ($validator->fails()) {
        return view('test')->withErrors($validator)
    }
    test::create($request->all());
}

原文由 paranoid 发布,翻译遵循 CC BY-SA 3.0 许可协议

你做错了。 rules 数组应该在您的控制器中或更好地在 Form Request 中。

让我告诉你一个更好的方法:

使用 php artisan make:request TestRequest 创建一个新的表单请求 文件。

示例 TestRequest 类:

 namespace App\Http\Requests;

use App\Http\Requests\Request;

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

    /**
     * Get the validation messages.
     *
     * @return array
     */
    public function messages()
    {
        return [
            'title.required'    => 'A title is required.',
            'name.required'    => 'The name field is required'
        ];
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'title' => 'required',
            'name' => 'required',
        ];
    }
}

将请求 对象注入您的控制器方法。

 public function store(TestRequest $request)
{
    // You don't need any validation, this is already done
    test::create($request->all());
}

原文由 codedge 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏