我正试图以正确的方式对Laravel 5进行验证:
以下是我在模型中的工作代码:
public function apiAddNewComment() {
if (Input::get("task") == 'addComment') {
$user = Auth::id();
$inputs = array(
'comment' => Input::get('comment'),
'projectID' => Input::get('projectID'),
'order' => Input::get("order"),
'level' => Input::get("level"),
);
$rules = array(
'comment' => 'required|between:15,600',
'projectID' => "required|exists:project_group,project_id,user_id,$user|numeric",
'order' => "required|numeric",
'level' => "required|numeric"
);
$validator = Validator::make($inputs, $rules);
if ($validator->fails()) {
return json_encode(array('err' => true, 'errors' => $validator->messages()->all()));
} else {
return $this->createNewComment();
}
}
}
这是我的控制器:
public function update($id, Comment $update)
{
return $update->apiUpdateComment();
}
如何使用request
进行验证?
有人可以解释一下这个方法在请求中是如何工作的:
public function authorize()
{
return false;
}
答案 0 :(得分:3)
Request
必须具备以下基本功能:rules()
和authorize()
规则返回一个用于验证的数组。
授权方法可以例如检查是否允许用户执行此请求。
public function authorize() {
return Auth::check();
}
因此,每次在控制器中使用请求时,都不必检查它。
如果您不需要支票,只需返回true
。
<强>更新强> 使用artisan生成请求文件
php artisan make:request CommandRequest
然后像这样编辑生成文件:
class CommandRequest extends FormRequest
{
public function rules()
{
return [
'comment' => 'required|between:15,600',
'projectID' => "required|exists:project_group,project_id,user_id,$user|numeric",
'order' => "required|numeric",
'level' => "required|numeric"
];
}
public function authorize()
{
return true;
}
}
同时更新控制器方法:
public function update($id, Comment $update, CommandRequest $request)
{
// create your comment here like:
return Comment::create($request->all());
}
答案 1 :(得分:0)
我猜你正在使用Laravel 4代码,你需要将它转换为L5,其中Input::get('var')
变成$request->input('var')
例如:
public function apiAddNewComment(Illuminate\Http\Request $request) { //Remember to add the Request as a parameter of the method
if ($request->input("task") == 'addComment') {
...
然后验证部分看起来很好