В Laravel, после валидации запроса, вы можете изменить значение поля "on" на "true" с помощью использования пользовательских правил валидации и обработчика.
1. Создайте новое правило валидации в Laravel. Откройте файл app/Rules
(если его нет, создайте его) и создайте новый класс, например, OnRule
:
namespace AppRules; use IlluminateContractsValidationRule; class OnRule implements Rule { /** * Determine if the validation rule passes. * * @param string $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value) { // Проверка, является ли значение равным "on" return $value === 'on'; } /** * Get the validation error message. * * @return string */ public function message() { return 'The :attribute must be "on".'; } }
2. Используйте новое правило валидации в вашем контроллере или форм-реквесте. Например, если вы используете форм-реквест:
use AppRulesOnRule; class YourRequest extends FormRequest { /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'your_field' => ['required', new OnRule], ]; } }
3. Создайте обработчик в контроллере, чтобы изменить значение поля "on" на "true". Например, если у вас есть метод сохранения в контроллере:
public function store(YourRequest $request) { // Получить проверенные данные $data = $request->validated(); // Изменить значение "on" на "true" if ($request->has('your_field') && $request->input('your_field') === 'on') { $data['your_field'] = true; } // Далее сохранить данные // ... }
Теперь, после валидации, значение поля "on" будет изменено на "true" в случае, если пользователь отметил его. Вы можете применить этот подход для любого поля, которое должно быть преобразовано после валидации.