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

时间:2015-11-29 03:29:15

标签: php 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为null,因此我在{{ $activity->start_at }}中有错误。

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

更好的方法是什么?

2 个答案:

答案 0 :(得分:0)

你可以使用这个,

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

答案 1 :(得分:0)

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

<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进行视图配置。希望这会有所帮助。