如何更新 Laravel 请求验证时的唯一字段

我正在尝试编辑一个表单,其中我有一个带有标题、正文和 slug 的帖子,slug 是独一无二的,所以如果我编辑而不更新它,它会说它已经被占用了


我正在我的 PostRequest 验证中尝试这个:


public function rules()

    {

       return [

            'title' => 'required',

            'body' => 'required',

            'metaTitle' => 'required',

            'metaDescription' => 'required',

            'slug' => ['required', Rule::unique('posts')->ignore($this->post)],

        ];

    }

Post 控制器上的功能是:


public function store(PostStoreRequest $request)

    {

        $validated = $request->validated();

        auth()->user()->posts()->create($validated);

        return redirect()->route('articulos.index');

    }

同样在我的刀片更新表单上,我有 @method('PUT')


慕丝7291255
浏览 125回答 3
3回答

ITMISS

你应该试试这个:public function rules() {            $slug = $this->request->get("slug");       return [            'title' => 'required',            'body' => 'required',            'metaTitle' => 'required',            'metaDescription' => 'required',            'slug' => ['required', Rule::unique('posts')->ignore($slug,'slug')],        ];  }

湖上湖

试试这个希望它会起作用public function rules(Request $request)    {        return [            'title' => 'required',            'body' => 'required',            'metaTitle' => 'required',            'metaDescription' => 'required',            'slug' => 'required|slug|unique:posts,slug,' . $this->post,        ];    }

森林海

请为StoreAndUpdate方法尝试此操作:'slug' => [     'required',     'slug',     'unique:posts,slug' . (isset($this->post)  ? ',' . $this->post : ' ') ],
打开App,查看更多内容
随时随地看视频慕课网APP