public function rules()
{
if ($this->method() == 'PUT') {
$post_id = $this->segment(3);
$rules = [
'post_title' => 'required|unique:posts,post_title,' . $post_id
];
} else {
$rules = [
'post_title' => 'required|unique:posts,post_title'
];
}
return $rules;
}
Laravel 5.8, простой и легкий
, можно сделать это все в запросе формы с вполне приятно...
первый делают поле, которым можно передать идентификатор (невидимый) в нормальной форме редактирования. т.е.
<div class="form-group d-none">
<input class="form-control" name="id" type="text" value="{{ $example->id }}" >
</div>
... Затем обязательно добавьте, что класс Правила к Вашей форме запрашивает как так:
use Illuminate\Validation\Rule;
... Добавьте Уникальное правило, игнорирующее ток, который я хотел бы так:
public function rules()
{
return [
'example_field_1' => ['required', Rule::unique('example_table')->ignore($this->id)],
'example_field_2' => 'required',
];
... Наконец введите подсказку запрос формы в методе обновления то же, поскольку Вы были бы метод хранилища, как так:
public function update(ExampleValidation $request, Examle $example)
{
$example->example_field_1 = $request->example_field_1;
...
$example->save();
$message = "The aircraft was successully updated";
return back()->with('status', $message);
}
Этот путь Вы не повторите код излишне :-)
Для пользовательского FormRequest и Laravel 5.7 + можно получить идентификатор обновленной модели как это:
public function rules()
{
return [
'name' => 'required|min:5|max:255|unique:schools,name,'.\Request::instance()->id
];
}