2015-07-18 6 views
0

Я реализую простой controller для моего мини-проекта. Для простоты этого вопроса есть только два вопроса: песня create и edit песни. Оба эти представления содержат ту же форму полей, поэтому я создал форму partial под названием _form.Как установить значение по умолчанию для частичной переменной формы в Laravel

Поскольку формы имеют различныецели - несмотря на наличие жеполя - Перехожу к парциальное несколько переменных, чтобы указать значение представить метки кнопки и кнопка отмены маршрута ,

Например:

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 к [] когда он не установлен.

Есть ли лучший способ сделать это? Here под вторя данных После того, как проверка на существование, Laravel поддерживает этот альтернативный эхо: {{ $name or 'Default' }}, но это не работает, так как я пытаюсь использовать его внутри {!! !!} блока уже ...

Итак, это ternary operator с помощью функция isset() - лучшее решение для этого случая? (Тот, который я использую в настоящее время)

ответ

0

Вы можете просто передать переменную $params пустым массивом ([]) в create.blade.php и удалить условие на частичном.

Затем вы можете установить значение по умолчанию на ваших .blade файлов

В качестве альтернативы вы можете установить значение по умолчанию на контроллере и отправить его в $ Params, если они не установлены (ваш слизняк).

Надеюсь, это поможет

+0

Да, но * это то, чего я хочу избежать. Имеет смысл не беспокоиться о передаче переменных в частичную форму, которой не существует (в данном случае '[]'). Для меня имеет смысл, что частичный «_form» должен быть ответственным за составление таких утверждений; чтобы признать, что ему нужна переменная, которая не получила, и, следовательно, по умолчанию она '[]'. Извините, я не уточнил эту деталь в вопросе. Я должен был это сделать. –