Как вернуть ошибки в Laravel Пользовательский запрос на Ajax - PullRequest
0 голосов
/ 09 апреля 2020

Я сделал пользовательский запрос следующим образом.

class CustomRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
      $rule['name']='required';
      $rule['email'] = 'required|email';
      return $rule;
    }
}

Как я могу вернуть ошибки проверки в ajax? Когда я не использовал пользовательский запрос, я возвращал ошибки, подобные этой.

public function store(Request $request)
{
   $validation = Validator::make($request->all(), [
      'name'=>'required',
      'email'=>'required|email'
   ]
   if($validation->fails())
   {
      return response()->json([$errors=>$validation->errors()]);
   }
   return response()->json(['status'=>'success']);
}

Так что здесь вместо Request, если я использую CustomRequest, тогда как мы можем отловить ошибки?


Другое дело. В пользовательском правиле запроса, как мы можем получить входные значения запроса?

   public function rules()
    {
      $rule['name']='required';
      if($this->input('phone')) {
        $rule['phone'] = 'integer';
      }
      $rule['email'] = 'required|email';
      return $rule;
    }

$ this-> input ('phone') Это правильно? Надеюсь дать мне ответ на мои 2 вопроса.

1 Ответ

1 голос
/ 09 апреля 2020

ошибка будет либо в вашей error функции обратного вызова, либо catch обратном вызове зависит от того, как вы выполняете ajax вызов.

например.

$.ajax({
        url: "/test",
        type: "post",
        data: {foo:'test'} ,
        success: function (response) {
            console.log(response);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            var data = jqXHR.responseJSON;
            console.log(data.errors);// this will be the error bag.
        }

для FormRequest Я думаю, что ваш код неверен

public function rules()
{
    return [
        'title' => 'required',
        'body' => 'required',
    ];
}

Это сделает проверку. Вам на самом деле не нужно обращаться к входному значению, поскольку Laravel сделает это за вас. Но по какой-то причине, если вы действительно этого хотите, вы всегда можете использовать глобальную вспомогательную функцию request()->input('title');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...