【问题标题】:How to set a default value for a form partial variable in Laravel如何在 Laravel 中为表单部分变量设置默认值
【发布时间】:2015-10-08 05:40:34
【问题描述】:

我正在为我的一个小型项目实施一个简单的controller。为了这个问题的简单性,只有两个视图很重要:create 歌曲和 edit 歌曲视图。这两个视图都包含相同的表单fields,因此我创建了一个名为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>

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

如您所见,在我的 form partialCancel 按钮中,我使用 isset($params) ? $params : []$params 变量默认为 []未设置。

有没有更好的方法来做到这一点? Here,在 检查存在后回显数据下,Laravel 支持这种替代回显:{{ $name or 'Default' }},但这不起作用,因为我已经尝试在 {!! !!} 块中使用它。 .

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

【问题讨论】:

    标签: laravel-5 laravel-form


    【解决方案1】:

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

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

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

    希望对你有帮助

    【讨论】:

    • 是的,但是 that 是我想避免的。不必担心将变量传递给不存在的部分形式(在本例中为[])。对我来说,_form 部分应该是负责做出此类断言的人是有道理的;确认它需要一个未收到的变量,因此将其默认为[]。很抱歉,我没有在问题中澄清这个细节。我应该这样做。
    猜你喜欢
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多