如何在 Laravel 中的表单输入中显示旧数据

How to show the old data in a form input in the Laravel

我这样写form.blade.php:

<div class="form-group">
    <label>Start at</label>
    <div id="start_date" class="input-group date form_datetime col-md-4" data-date-format="yyyy-mm-dd hh:ii:ss">
        <input class="form-control" name="start_at" size="16" type="text" value="{{  $activity->start_at }}">
        <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
        <span class="input-group-addon"><span class="glyphicon glyphicon-th"></span></span>
    </div>
</div>

Create 和Edit 方法都使用视图来显示表单。在Edit方法中,使用了$activity,一切正常。但是在 Create 方法中,$activity 为空,所以我在 {{ $activity->start_at }}.

中出错

我知道我可以使用 if(!empty($activity)) 来防止这个错误。但我不想在任何地方使用它。

更好的方法是什么?

你可以用这个,

{{ $activity->start_at or '' }}

我也喜欢重复使用代码并使用相同的视图来创建或编辑对象。我所做的是将对象的全新实例传递给创建视图。通过这种方式,我的对象处于初始状态,包括默认值(如果有),并且我可以在显示的表单上预填充这些默认值(如果有)。它给了我一个额外的好处:如果在服务器级别的验证出现任何问题,用户不会丢失任何数据,我只需要在视图中做这样的事情:

<div class="form-group">
    <label for="test_field" class="control-label">Fecha de firma</label>
         <input type="text" value="{{ ( !empty($isabi) ? $isabi->fecha_firma : old('fecha_firma')) }}" 
                name="fecha_firma" id="isabi-fechafirma" class="form-control" placeholder="Este campo es obligatorio">
</div>

为了清楚起见,这是删除了额外功能的创建方法(检查用户是否经过身份验证,将创建的对象与用户工作的公司和其他内容相关联):

public function create()
{
    return view('isabis.create', [
    "isabi" => new Isabi()
    ])->with($this->data);

}

我使用 $this->data 进行视图配置。希望这有帮助。