0

我正在为我controller的一个小型项目实施一个简单的。为了这个问题的简单性,只有两个观点很重要:create歌曲和edit歌曲观点。这两个视图都包含相同的表单,因此我创建了一个partial名为_form.

由于表单有不同的 用途——尽管有相同的 字段——我将几个变量传递给部分变量来指定提交按钮标签的值和取消按钮路由。

例如:

编辑刀片.php:

(...)

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

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

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

(...)

创建.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>

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

如您所见,在我的表单 partial的Cancel按钮中,我使用将变量默认为未设置时。isset($params) ? $params : []$params[]

有一个更好的方法吗?在这里,在Echoing Data After Checking For Existence下,Laravel 支持这种替代 echo: {{ $name or 'Default' }},但这不起作用,因为我已经尝试在{!! !!}块内使用它......

那么,ternary operator使用该isset()功能是这种情况下的最佳解决方案吗?(我现在用的那个)

4

1 回答 1

0

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

然后您可以在 .blade 文件上设置默认值

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

希望能帮助到你

于 2015-07-18T17:56:46.753 回答