如何在Laravel

时间:2015-07-18 17:43:54

标签: laravel-5 laravel-form

我正在为我的迷你项目实施一个简单的controller。为了简化这个问题,只有两个视图很重要:create首歌曲和edit歌曲视图。这两个视图都包含相同的字段形式,因此我创建了一个名为partial的表单_form

由于表单具有不同的 目的 - 尽管相同 字段 - 我传递给部分一些变量用于指定提交按钮标签的值,以及取消按钮路径。

例如:

edit.blade.php:

(...)

{!! Form::model($song, ['route' => ['songs.update', $song->slug], 'method' => 'PATCH']) !!}

    @include('songs._form', [
        'submitButtonLabel' => 'Update',
        'returnRoute' => 'song_path',
        'params' => [$song->slug]
    ])

{!! Form::close() !!}

(...)

create.blade.php:

(...)

{!! Form::open(['route' => 'songs.store']) !!}

    @include('songs._form', [
        'submitButtonLabel' => 'Save',
        'returnRoute' => 'songs_path'
    ])

{!! Form::close() !!}

(...)

这是 _form.blade.php 部分:

(...)

<div class="form-group">
    {!! Form::submit($submitButtonLabel, ['class' => 'btn btn-success']) !!}

    {!! link_to_route($returnRoute, 'Cancel', isset($params) ? $params : [], ['class' => 'btn btn-default', 'role' => 'button']) !!}
</div>

现在,我的问题是(最后):

正如您所看到的,在我的表单部分取消按钮中,我使用isset($params) ? $params : []$params变量默认为{ {1}}未设置时。

有更好的方法吗? Here,在检查存在后回显数据下,Laravel支持这个替代回声:[],但这不起作用,因为我试图在{{1}内使用它已阻止......

那么,使用{{ $name or 'Default' }}函数的{!! !!}是否是此案例的最佳解决方案? (我目前正在使用的那个)

1 个答案:

答案 0 :(得分:0)

您可以在create.blade.php中简单地传递变量$params一个空数组([])并删除部分条件。

然后您可以在.blade文件

上设置默认值

作为替代方案,您可以在控制器上设置默认值,如果未设置(您的slug),则将其作为$ params发送。

希望有所帮助