Как правильно заменить значение checkbox на 1 и 0 вместо 'on' и null?

При обработке формы значение checkbox 'status' имеет либо 'on', если состояние checked и null в противном случае. Как правильно изменять значение на 1 и 0 соответственно в Laravel 6?

Код формы
<form method="POST" action="/admin/menu">
                    @csrf
                    @method('PUT')
                    <div class="form-group">
                        <label for="exampleInputEmail1">Заголовок</label>
                        <input type="text" name="title" class="form-control" value="{{ old('title') }}">
                        @error('title')
                            <p class="alert alert-danger" role="alert">{{ $errors->first('title') }}</p>
                        @enderror
                    </div>
                    <div class="form-group">
                        <label for="exampleInputPassword1">Ссылка</label>
                        <input type="text" name="link" class="form-control" value="{{ old('link') }}">
                        @error('link')
                            <p class="alert alert-danger" role="alert">{{ $errors->first('link') }}</p>
                        @enderror
                    </div>
                    <div class="form-group">
                        <label for="exampleInputPassword1">Сортировка</label>
                        <input type="text" name="weight" class="form-control" value="{{ old('weight') }}">
                        @error('weight')
                            <p class="alert alert-danger" role="alert">{{ $errors->first('weight') }}</p>
                        @enderror
                    </div>
                    <div class="form-group form-check">
                        <input type="checkbox" class="form-check-input" name="status" id="status">
                        <label class="form-check-label" for="status">Включено</label>
                        @error('status')
                            <p class="alert alert-danger" role="alert">{{ $errors->first('status') }}</p>
                        @enderror
                    </div>
                    <button type="submit" class="btn btn-primary">Добавить</button>
                </form>


Метод контроллера

public function store()
    {
        $validatedData = request()->validate([
            'title' => 'required',
            'link' => 'required',
            'weight' => 'required',
            'status' => 'nullable'
        ]);

        Menu::create($validatedData);

        return redirect('/admin/menu');
    }
  • Вопрос задан
  • 1183 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега HTML
Нужно явно указать значение инпута (по-умолчанию используется on). А чтобы приходил 0, нужно добавить скрытый инпут, потому что если чекбокс не выбран, браузер вообще не отправит это поле.
<input type="hidden" name="status" value="0">
<input type="checkbox" name="status" value="1" id="status" class="form-check-input">
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы