2016-05-22 2 views
0

При визуализации представления с контроллера стандартная практика заключается в том, чтобы поместить ваш код в контроллер, а затем передать необходимые переменные виду, чтобы их можно было использовать при рендеринге.Где разместить код, требуемый макетом в Ларавеле?

Этот вид обычно расширяет вид макета.

Где я могу поместить свой код, который необходим в макет, и как его вставить?

В качестве примера я посмотрел кнопки входа/регистрации из официального кода Laravel. Чтобы отобразить их правильно, в представлении требуется информация о том, был ли пользователь в настоящий момент зарегистрирован или нет.

В Laravel это выглядит следующим образом:

@if (Auth::guest()) 
    <li><a href="{{ url('/login') }}">Login</a></li> 
    <li><a href="{{ url('/register') }}">Register</a></li> 
@else 
    ... 

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

Есть ли лучший способ сделать это в laravel?

Например, в Zend/Magento существует понятие «блок». Где есть класс с кодом, который соответствует представлению и может использоваться для предоставления данных.

Имеет ли смысл вкладывать это в среднюю посуду или поставщика услуг?

+1

Чтобы быть честным, я думаю, что это абсолютно нормально, но если вы хотите сместить его внутри переменной, вам нужно поместить его в композитор представления, в котором вы проверяете, является ли текущий пользователь гостем, а затем разделяют которые рассматривают композитор со всеми представлениями, к которым применяется логика. Вот документация для L5.2: https://laravel.com/docs/5.2/views#view-composers (Edit: обратите внимание на то, что, поскольку совместно используемые композиторы представления немного изменились, поэтому убедитесь, что вы смотрите документацию для версии, которую вы используете.) –

+0

Это именно то, что я искал @JoelHinz. Если вы переместите taht на ответ, то отметьте его как принятый. –

+0

Рад, что это помогло! Спасибо, что позволили мне добавить его в качестве ответа, я сделал это сейчас. –

ответ

1

Чтобы быть честным, я думаю, что это абсолютно нормально, но если вы хотите сместить его внутри переменной, вам нужно поместить его в композитор представления, в котором вы проверяете, является ли текущий пользователь гостем, а затем поделиться тем, что рассматривает композитор со всеми представлениями, к которым применяется логика.

Вот документация L5.2: http://laravel.com/docs/5.2/views#view-composers

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

Смежные вопросы