0

私は私controllerのミニプロジェクトに単純なものを実装しています。この質問を簡単にするために、song ビューcreateeditsong ビューの 2 つのビューのみが重要です。これらのビューには両方とも同じフォームフィールド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>

さて、私の質問は(最後に):

ご覧のとおり、フォーム partialの [キャンセル] ボタンで、変数が設定されていないときに変数をデフォルトに設定しています。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 ファイルにデフォルト値を設定できます

別の方法として、コントローラーにデフォルト値を設定し、設定されていない場合は $params として送信できます (スラッグ)。

それが役に立てば幸い

于 2015-07-18T17:56:46.753 に答える