如何在 laravel 的编辑表单中绑定来自数据库的单选按钮值?

How to bind radio button values from database in edit form in laravel?

我已经为创建 create.balde.php 和编辑 创建了一个表单 from.blade.php edit.blade.php。我正在使用该表单执行这两个操作,但我在检索数据和为单选按钮显示数据时遇到问题。知道当我去创建操作时,单选按钮将是默认的。

这种形式:

<div class="form-group">
    <div class="form-check form-check-radio">
        <label class="form-check-label">
            {{-- {{ ($news->status=="1")? "checked" : "" }} --}}
            <input class="form-check-input" {{ $page->status == '1' ? 'checked' : '' }} type="radio" name="status"
                   id="exampleRadios1" value="0" checked>
            Status is off
            <span class="circle">
                <span class="check"></span>
            </span>
        </label>
    </div>
    <div class="form-check form-check-radio">
        <label class="form-check-label">
            <input class="form-check-input" type="radio" {{ $page->status == '1' ? 'checked' : '' }} name="status"
                   id="exampleRadios2" value="1">
            Status is on
            <span class="circle">
                <span class="check"></span>
            </span>
        </label>
    </div>
</div>

这个 {{ $page->status == '1' ? 'checked' : '' }} 可以很好地编辑 但是当我转到 create.blade.php 时,出现此错误:

Undefined variable: page (View: C:\Users\PC\Desktop\khaleej_aden\resources\views\pages\includes\form.blade.php) (View: C:\Users\PC\Desktop\khaleej_aden\resources\views\pages\includes\form.blade.php)


但是如果我删除了这些行,create.blade.php 就可以完美运行。 那么我可以在 {{ $page->status == '1' ? 'checked' : '' }} 中更改什么以使其适用于创建和更新?

最简单且不那么丑陋的方法是将一个空的 Page 实例从您的控制器传递到页面,如下所示:

$page = new Page;

return view('create', compact('page'));

这样您就可以避免每次要在视图中使用页面变量时进行检查。

您也可以更改代码以在检查状态之前检查对象

{{ (isset($page->status) && $page->status == '1') ? 'checked' : '' }}