Можно ли заменить on на true после валидации Laravel?

В 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" в случае, если пользователь отметил его. Вы можете применить этот подход для любого поля, которое должно быть преобразовано после валидации.