Laravel: Проверьте, что поле ввода пусто или не отправлено - PullRequest
0 голосов
/ 23 октября 2018

У меня есть несколько форм на разных сайтах.Все они заканчиваются на одном маршруте.Пользователь имеет возможность установить некоторые типы модели на нуль.Не каждая форма отправляет все поля модели.Например:

Модель имеет следующие поля: Name, Adress, Phone, Text

Форма 1 отправляет Name, Adress, Phone

Форма 2 отправляет Adress, Text

Если яотправьте форму 1, моя модель будет выглядеть так:

$model->name = Name;
$model->adress = Adress;
$model->phone = Phone;
$model->text = null;

Но я не хочу перезаписывать текст.Я хочу, чтобы текст был значением, которое было до отправки.Но если я отправляю форму 2, я хочу изменить текст или даже установить его на нуль.

Однако, как я могу проверить, было ли имя формы в отправленной форме (даже если это действительно null)?

Конечно, это мое обновление рутины в моем контроллере:

...
$this->artSkill = ($request->artSkill) ? $request->artSkill : null;
$this->craftsmanSkill = ($request->craftsmanSkill) ? $request->craftsmanSkill : null;
$this->ownInitiativeSkill = ($request->ownInitiativeSkill) ? $request->ownInitiativeSkill : null;
...

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы можете выбрать следующую логику:

$model->text = $request->filled('text') ? $request->get('text', $model->text) : null;

Если text отсутствует в запросе, его значение равно нулю.

Если присутствует text и егозначение не заполнено, сохраняется исходное значение.

0 голосов
/ 23 октября 2018

Вы можете использовать метод модели update() и передавать только те значения, которые не равны нулю:

https://laravel.com/docs/5.7/eloquent#updates

Например,

$input = $request->all();
$input = array_filter($input);
$model->update($input);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...