public function store(Request $request) {
$response = array('response' => '', 'success'=>false);
$rules = [
'email' => 'required|email',
'password' => 'required'
];
$validator = \Validator::make($request->all(), $rules);
if($validator->fails()){
$response['response'] = $validator->messages();
return $this->response->error($response, 401);
// or
return $this->response->error($validator, 401);
}else{
User::create($request->all());
}
}
如何使用dingo API在laravel中设置验证器?我尝试了上面的代码,但无法正常工作无法理解哪里是正确的引用来跟踪错误日志
请指导。
答案 0 :(得分:1)
$rules = [
'username' => 'required',
'password' => 'required'
];
$payload = app('request')->only('username', 'password');
$validator = app('validator')->make($payload, $rules);
if ($validator->fails()) {
throw new Dingo\Api\Exception\StoreResourceFailedException('Invalid username provided.', $validator->errors());
}
您可以尝试
答案 1 :(得分:0)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 2, 3, 5, 6, 7, 8]
[1, 16, 25, 36, 49, 64, 81]
此示例取自documentation of Dingo,并根据您的代码进行自定义。
答案 2 :(得分:0)
我发现使用Dingo API进行验证的最佳方法是使用Form Requests。
但是,使用Dingo API时,请使用
use Dingo\Api\Http\FormRequest;
而不是
use App\Http\Requests\Request;
喜欢正常形式的请求。
所以在你的情况下,你有一个表单请求,如
<?php
namespace App\Http\Requests;
use Dingo\Api\Http\FormRequest;
class CreateUser extends FormRequest
{
/**
* 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 [
'email' => 'required|email',
'password' => 'required'
];
}
}
因此,这会在您的控制器之外保留验证。你的控制器功能可以只是
public function store(Request $request) {
User::create($request->all());
}
如果您对Form Requests不是很熟悉,这是一个很好的机会来看待它。欢呼声。