#laravel #eloquent #request #laravel-8
Вопрос:
У меня есть несколько стандартных одиночных флажков, которые определяют определенное логическое значение, т. Е. is_active
<label class="form-check-label text-google">
<input type="checkbox" name="is_active" id="is_active" value="1" class="form-check-input"
@if (old('is_active') == '1' || (empty(old()) amp;amp; $doctor->is_active == 1)) checked @endif>
{{ __('Doctor activated') }}
<i class="input-helper"></i>
</label>
При отправке его на мой контроллер запрос выполняется через пользовательский класс запроса, где в настоящее время я выполняю следующее. В основном это важно для метода обновления, поэтому снятый флажок будет обновлен в базе данных.
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$this->request->set("is_active", $this->request->has("is_active"));
return [ ...
Я также привел свойство is_active в модели в качестве логического значения.
Что здесь является лучшей практикой? Я не мог найти ничего, что вело бы меня в правильном направлении…
Заранее спасибо.
Комментарии:
1. Ваш вопрос не настолько ясен. Насколько я могу видеть, у вас установлено
is_active
свойство формы1
, и затем вы хотите переопределить это значение в объекте запроса перед проверкой, это то, что вы пытаетесь?2. Да, это в значительной степени то, чего я хочу достичь
Ответ №1:
Поскольку вы хотите коснуться запроса до проверки, вы можете использовать этот метод: prepareForValidation()
:
Подготовка Входных Данных Для Проверки
Если вам необходимо подготовить или очистить какие-либо данные из запроса, прежде чем применять правила проверки, вы можете использовать метод prepareForValidation:
use IlluminateSupportStr; /** * Prepare the data for validation. * * @return void */ protected function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->slug), ]); }
Так что в вашем случае вы можете сделать:
public function prepareForValidation()
{
$this->merge([
'is_active' => $this->request->has('is_active')),
]);
}
Комментарии:
1. Это здорово, этот метод
prepareForValidation
-то, что я искал… Однако ваше примечание не решает проблему, так как флажок не отправляет никакого значения при снятии, и мне нужно значение false снятого флажка
Ответ №2:
как я читал, вы хотите знать, есть ли значение или нет, на самом деле я думаю, что вы можете использовать filled
функцию запроса класса.