Ajax формат после отправки - Laravel - PullRequest
0 голосов
/ 01 августа 2020

Я работаю над проектом, у меня возникли некоторые проблемы

Если я заполню все поля, а затем отправлю, проблем нет, и он сохраняется в базе данных, но моя проблема, если какое-то поле пусто, ошибка сообщений проверки отображаются на другой странице в формате JSON.

Я не использую код AJAX в моем файле представления.

Вот код контроллера:

public function store(RegisterRequest $request){
    $user = User::create($request->all());
    $user->password = Hash::make($request['password']);

    if ($request->file('avatar')) {
        $image = $request->file('avatar');
        $destinationPath = base_path() . '/public/uploads/default';
        $path = time() . '_' . Str::random(10) . '.' . $image->getClientOriginalExtension();
        $image_resize = Intervention::make($image->getRealPath());
        $image_resize->resize(300, 300);
        $image_resize->save($destinationPath . '/' . $path);
    } else {
        $path = $user->avatar;
    }
    $user->avatar = $path;

    $user->save();

    return redirect()->route('admin.user.index')->with('message','User created successfully');

А вот RegisterRequest код:

public function rules()
{
    return [
        'name'         => 'required',
        'email'        => 'required|email|unique:users,email',
        'password'     => 'required|min:6|confirmed',
        'country_code' => 'sometimes|required',
        'phone'=>Rule::unique('users','phone')->where(function ($query) {
            $query->where('country_code', Request::get('country_code'));
        })
    ];

Не могли бы вы мне помочь?

1 Ответ

0 голосов
/ 01 августа 2020

Ваши ошибки должны быть доступны внутри файла лезвия с переменной $ errors, которую вам нужно перебирать и отображать ошибки. Ссылка на do c, которая поможет вам с частью рендеринга - https://laravel.com/docs/7.x/validation#quick -displaying-the-validation-errors

Очевидно из do c, а также

If validation fails, a redirect response will be generated to send the user back to their previous location. The errors will also be flashed to the session so they are available for display. If the request was an AJAX request, a HTTP response with a 422 status code will be returned to the user including a JSON representation of the validation errors.

https://laravel.com/docs/7.x/validation#creating -form-requests

Также немного реорганизуйте код, как показано ниже, чтобы выполнить только один запрос для создания пользователя вместо создания и последующего обновления.

 public function store(RegisterRequest $request){
    if ($request->hasFile('avatar')) {
        //use try catch for image conversion might be a rare case of lib failure
        try {
            $image = $request->file('avatar');
            $destinationPath = base_path() . '/public/uploads/default';
            $path = time() . '_' . Str::random(10) . '.' . $image->getClientOriginalExtension();
            $image_resize = Intervention::make($image->getRealPath());
            $image_resize->resize(300, 300);
            $image_resize->save($destinationPath . '/' . $path);
            $request->avatar = $path;
        } catch(\Exception $e){
            //handle skip or report error as per your case
        }
    }
    $request['password'] = Hash::make($request['password']);
    $user = User::create($request->all());
    return redirect()->route('admin.user.index')->with('message','User created successfully');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...