Как использовать проверку при редактировании формы в laravel?

В My Blog Controller у меня есть addBlog и updateBlog, которые пытаются проверить их с помощью функции проверки. При добавлении блога он работает, как указано, но при обновлении блога он снова и снова говорит, что заголовок уже существует, так как я выбрал заголовок как uniue. Итак, как я могу сделать эту работу для редактирования.

Я использую laravel 5.2

protected function validator(array $data)
{
    return Validator::make($data, [
        'title' => 'required|max:255|unique:blogs',
        'meta_tags' => 'required|max:200',
        'content' => 'required|min:6',
    ]);
}



public function updateBlog(Request $request, $id)
{

    $this->middleware('auth');
    $user = Auth::user();

    $validator = $this->validator($request->all());
    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }

    try{
        $blog_Request = Blog::findOrFail($id);
        $blog_Request->title = $request->get('title');;
        $blog_Request->meta_tags = $request->get('meta_tags');
        $blog_Request->content = $request->get('content');
        $blog_Request->status = $request->get('status');

        if ($blog_Request->save()) {
            $request->session()->flash('message', 'Blog saved successfully!');
            $request->session()->flash('alert-class', 'alert-success');
        } else {
            $request->session()->flash('message', 'Some error occoured!');
            $request->session()->flash('alert-class', 'alert-danger');            
        }
        return redirect()->route('blog.edit_blog', $id);
    } catch (QueryException $ex) {
        print_r("Error on line number " . $ex->getLine() . " in file " . $ex->getFile() ."</br>");
    }

}


public function addBlog(Request $request)
{
    $this->middleware('auth');
    $user = Auth::user();

    $validator = $this->validator($request->all());
    if ($validator->fails()) {
        $this->throwValidationException(
            $request, $validator
        );
    }

    $blog_Requests = new Blog;
    $blog_Requests->title = $request->get('title');;
    $blog_Requests->meta_tags = $request->get('meta_tags');
    $blog_Requests->content = $request->get('content');
    $blog_Requests->user_id = $user->id;

    try{
        if ($blog_Requests->save()) {
            $request->session()->flash('message', 'Blog saved successfully!');
            $request->session()->flash('alert-class', 'alert-success');
        } else {
            $request->session()->flash('message', 'Some error occoured!');
            $request->session()->flash('alert-class', 'alert-danger');            
        }
        return redirect()->route('blogs');
    } catch (QueryException $ex) {
        print_r("Error on line number " . $ex->getLine() . " in file " . $ex->getFile() ."</br>");
    }
}
Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Валидация полей ввода для базовой формы React
Валидация полей ввода для базовой формы React
В одном из моих проектов MERN Stack есть форма с именем, фамилией, контактным номером, адресом, электронной почтой, датой рождения, номером NIC, весом...
Пользовательские правила валидации в Laravel
Пользовательские правила валидации в Laravel
Если вы хотите создать свое собственное правило валидации, Laravel предоставляет возможность сделать это. Создайте правило с помощью следующей...
0
0
37
1

Ответы 1

Я думаю, что решение заключается в добавлении $blog->id в качестве второго параметра в ваш валидатор, потому что вы хотите выдать ошибку валидации только в том случае, если пользователь предоставляет заголовок, который уже используется в блоге разные. :

return Validator::make($data, [
    'title' => 'required|max:255|unique:blogs,' . $blog->id,
    'meta_tags' => 'required|max:200',
    'content' => 'required|min:6',
]);

https://laracasts.com/discuss/channels/requests/problem-with-unique-field-validation-on-update?page=1

Надеюсь на эту помощь!

Другие вопросы по теме