Может войдёшь?
Черновики Написать статью Профиль

Шаблоны и отклики

перевод документация 4.x

  1. 1. Базовые отклики
  2. 2. Переадресация
  3. 3. Шаблоны
  4. 4. Составители
  5. 5. Создатели
  6. 6. Особые отклики
  7. 7. Макрос отклика
Этот перевод актуален для англоязычной документации на (ветка 4.2) , (ветка 4.1) и (ветка 4.0). Опечатка? Выдели и нажми Ctrl+Enter.

Базовые отклики

Возврат строк из маршрутов

PHP
Route::get('/', function () {
  return 
'Привет, мир!';
});

Создание собственного ответа (отклика)

Объект PHPResponse наследует класс PHPSymfony\Component\HttpFoundation\Response, который предоставляет набор методов для построения отклика HTTP.

PHP
$response Response::make($contents$statusCode);

$response->header('Content-Type'$value);

return 
$response;
+ 4.1

добавлено в 4.1 ()

Если вам нужен доступ к методам класса PHPResponse, но вы хотите возвращать шаблон в качестве содержимого отклика, то вы можете использовать метод PHPResponse::view для удобства:

PHP
return Response::view('hello')->header('Content-Type'$type);

Добавление cookie к ответу

PHP
$cookie Cookie::make('name''значение');

return 
Response::make($content)->withCookie($cookie);

Переадресация

PHP
return Redirect::to('user/login');

Переадресация с одноразовыми переменными сессии

PHP
return Redirect::to('user/login')->with('message''Войти не удалось');

Метод PHPwith() сохраняет данные в сессии, поэтому вы можете прочитать их, используя обычный метод PHPSession::get().

Переадресация на именованный маршрут

PHP
return Redirect::route('login');

Переадресация на именованный маршрут с параметрами

PHP
return Redirect::route('profile', array(1));

Переадресация на именованный маршрут с именованными параметрами

PHP
return Redirect::route('profile', array('user' => 1));

Переадресация на действие контроллера

PHP
return Redirect::action('HomeController@index');

Переадресация на действие контроллера с параметрами

PHP
return Redirect::action('UserController@profile', array(1));

Переадресация на действие контроллера с именованными параметрами

PHP
return Redirect::action('UserController@profile', array('user' => 1));

Шаблоны

Шаблоны (views) обычно содержат HTML-код вашего приложения и представляют собой удобный способ разделения логики контроллеров и обработки страниц от их представления. Шаблоны хранятся в папке app/views.

Простой шаблон может иметь такой вид:

xml<!-- Шаблон из файла app/views/greeting.php -->

<html>
    <body>
        <h1>Привет, <?php echo $name; ?></h1>
    </body>
</html>

Этот шаблон может быть возвращён в браузер таким образом:

PHP
Route::get('/', function () {
  return 
View::make('greeting', array('name' => 'Тейлор'));
});

Второй параметр, переданный в PHPView::make() — массив данных, которые должны быть доступны внутри шаблона.

Передача переменных в шаблон

PHP
// Используя традиционный подход
$view View::make('greeting')->with('name''Стив');

// Используя магию
$view View::make('greeting')->withName('стив');

В примере выше переменная PHP$name будет доступна в шаблоне и будет иметь значение Стив.

Можно передать массив данных в виде второго параметра для метода PHPmake():

PHP
$view View::make('greetings'$data);

Вы также можете «поделить» данные между всеми шаблонами, сделав их глобальными:

PHP
View::share('name''Steve');

Передача вложенного шаблона в шаблон

Иногда вам может быть нужно передать шаблон внутрь другого шаблона. Например, имея шаблон app/views/child/view.php нам может понадобиться передать его в другой шаблон и мы можем сделать это так:

PHP
$view View::make('greeting')->nest('child''child.view');

$view View::make('greeting')->nest('child''child.view'$data);

Затем вложенный шаблон может быть отображён в родительском шаблоне:

xml<html>
    <body>
        <h1>Привет!</h1>
        <?php echo $child; ?>
    </body>
</html>
+ 4.2

добавлено в 4.2 ()

Определение существования шаблона

Для определения того, существует ли шаблон, используйте метод PHPView::exists():

PHP
if (View::exists('emails.customer'))
{
  
//
}

Составители

Составители шаблонов — функции обратного вызова или методы класса, которые вызываются, когда данный шаблон формируется (отображается) в строку. Если у вас есть данные, которые вы хотите привязать к шаблону при каждом его формировании, то составители помогут вам выделить такую логику в единое место. Таким образом, составители могут работать как «модели шаблонов» или «представители».

Регистрация составителя

PHP
View::composer('profile', function ($view) {
  
$view->with('count'User::count());
});

Теперь при каждом отображении шаблона profile к нему будет привязана переменная count.

Вы можете привязать составитель сразу к нескольким шаблонам:

PHP
View::composer(array('profile','dashboard'), function ($view) {
  
$view->with('count'User::count());
});

Если вам больше нравятся методы классов, что позволяет вам использовать регистрации в контейнере IoC, то вы можете сделать это так:

PHP
View::composer('profile''ProfileComposer');

Класс составителя должен иметь такой вид:

PHP
class ProfileComposer {

  public function 
compose($view)
  {
    
$view->with('count'User::count());
  }

}
+ 4.1

добавлено в 4.1 ()

Регистрация нескольких составителей

Вы можете использовать метод PHPcomposers(), чтобы зарегистрировать группу составителей за один раз:

PHP
View::composers(array(
  
'AdminComposer' => array('admin.index''admin.profile'),
  
'UserComposer' => 'user',
  
'ProductComposer@create' => 'product'
));

Нет строгого правила, где должны храниться классы-составители. Вы можете поместить их в любое место, где их сможет найти автозагрузчик в соответствии с директивами в вашем файле composer.json.

Создатели

Создатели шаблонов работают почти так же, как составители, но вызываются сразу после создания объекта шаблона, а не во время его отображения в строку.Для регистрации нового создателя используйте метод PHPView::creator():

PHP
View::creator('profile', function ($view) {
  
$view->with('count'User::count());
});

Особые отклики

Создание JSON-ответа

PHP
return Response::json(array('name' => 'Стив''state' => 'CA'));

Создание JSONP-ответа

PHP
return Response::json(array('name' => 'Стив''state' => 'CA'))
  ->
setCallback(Input::get('callback'));

Создание отклика загрузки файла

PHP
return Response::download($pathToFile);

return 
Response::download($pathToFile$name$headers);

Класс Symfony PHPHttpFoundation, которая управляет загрузкой файлов, требует, чтобы загружаемый файл имел ASCII-имя.

+ 4.1

добавлено в 4.1 ()

Макрос отклика

Если вы хотите зарегистрировать пользовательский отклик, который вы смогли бы использовать повторно в различных маршрутах и контроллерах, то можете использовать метод PHPResponse::macro():

PHP
Response::macro('caps', function($value)
{
  return 
Response::make(strtoupper($value));
});

Функция PHPmacro() принимает имя в качестве первого аргумента и замыкание в качестве второго. Замыкание макроса будет выполнено при вызове имени макроса на классе PHPResponse:

PHP
return Response::caps('foo');

Вы можете зарегистрировать свои макросы в одном из ваших файлов app/start. Или вы можете организовать свои макросы в отдельном файле, который будет подключаться в одном из старт-файлов.

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.