Laravel 5, как сделать, если флажок установлен в контроллере - PullRequest
0 голосов
/ 12 апреля 2020

на мой взгляд

<form method="post" action="{{ route('admin.users.save', $entry->id) }}">
    {{ csrf_field() }}

    <div class="pull-right">
        <button type="submit" class="btn btn-primary">
            Kaydet
        </button>
    </div>


    <div class="checkbox">
        <label>
            <input type="hidden" name="is_it_admin" value="0">
            <input type="checkbox" name="is_it_admin" value="1" {{ old('is_it_admin', $entry->is_it_admin) ? 'checked' : '' }}> Aktif Mi
        </label>
    </div>

</form>

это моя форма в представлении

это в моем контроллере функция сохранения

public function save($id = 0){

   $data = \request()->only('name_surname','email');


    $data['is_it_admin'] = \request()->has('is_it_admin') ? 1 : 0;
    if ($id>0){
        $entry = User::where('id',$id)->firstOrFail();
        $entry->update($data);
    }
    else{

        $entry = User::create($data);
    }

    return redirect()
        ->route('admin.users.edit',$entry->id);

}

Не работает, когда я используйте has, но это работает, когда вы не используете has. Почему

1 Ответ

1 голос
/ 12 апреля 2020

request()->has() возвращает логическое значение, указывающее, присутствует поле или нет. Это не то, что вы хотите, так как ваше поле будет всегда присутствовать (даже если значение равно 0)

Что вам нужно, это request()->get():

public function save($id = 0){

   $data = \request()->only('name_surname','email');


    $data['is_it_admin'] = \request()->get('is_it_admin');
    if ($id>0){
        $entry = User::where('id',$id)->firstOrFail();
        $entry->update($data);
    }
    else{

        $entry = User::create($data);
    }

    return redirect()
        ->route('admin.users.edit',$entry->id);

}

Хотя вам не нужно сделать это вы можете просто:

public function save($id = 0){

   $data = \request()->only('name_surname','email', 'is_it_admin');

    if ($id > 0){
        $entry = User::where('id',$id)->firstOrFail();
        $entry->update($data);
    }
    else {
        $entry = User::create($data);
    }

    return redirect()
        ->route('admin.users.edit',$entry->id);

}
...