Базовые отклики
Возврат строк из маршрутов
Route::get('/', function () {
return 'Привет, мир!';
});
Создание собственного ответа (отклика)
Объект PHPResponse
наследует класс PHPSymfony\Component\HttpFoundation\Response
, который предоставляет набор методов для построения отклика HTTP.
$response = Response::make($contents, $statusCode);
$response->header('Content-Type', $value);
return $response;
добавлено в 4.1 ()
$cookie = Cookie::make('name', 'значение');
return Response::make($content)->withCookie($cookie);
Переадресация
return Redirect::to('user/login');
Переадресация с одноразовыми переменными сессии
return Redirect::to('user/login')->with('message', 'Войти не удалось');
Метод PHPwith()
сохраняет данные в сессии, поэтому вы можете прочитать их, используя обычный метод PHPSession::get()
.
Переадресация на именованный маршрут
return Redirect::route('login');
Переадресация на именованный маршрут с параметрами
return Redirect::route('profile', array(1));
Переадресация на именованный маршрут с именованными параметрами
return Redirect::route('profile', array('user' => 1));
Переадресация на действие контроллера
return Redirect::action('HomeController@index');
Переадресация на действие контроллера с параметрами
return Redirect::action('UserController@profile', array(1));
Переадресация на действие контроллера с именованными параметрами
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>
Этот шаблон может быть возвращён в браузер таким образом:
Route::get('/', function () {
return View::make('greeting', array('name' => 'Тейлор'));
});
Второй параметр, переданный в PHPView::make()
— массив данных, которые должны быть доступны внутри шаблона.
// Используя традиционный подход
$view = View::make('greeting')->with('name', 'Стив');
// Используя магию
$view = View::make('greeting')->withName('стив');
В примере выше переменная PHP$name
будет доступна в шаблоне и будет иметь значение Стив.
Можно передать массив данных в виде второго параметра для метода PHPmake()
:
$view = View::make('greetings', $data);
Вы также можете «поделить» данные между всеми шаблонами, сделав их глобальными:
View::share('name', 'Steve');
Передача вложенного шаблона в шаблон
Иногда вам может быть нужно передать шаблон внутрь другого шаблона. Например, имея шаблон app/views/child/view.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 ()
Составители
Составители шаблонов — функции обратного вызова или методы класса, которые вызываются, когда данный шаблон формируется (отображается) в строку. Если у вас есть данные, которые вы хотите привязать к шаблону при каждом его формировании, то составители помогут вам выделить такую логику в единое место. Таким образом, составители могут работать как «модели шаблонов» или «представители».
View::composer('profile', function ($view) {
$view->with('count', User::count());
});
Теперь при каждом отображении шаблона profile к нему будет привязана переменная count.
Вы можете привязать составитель сразу к нескольким шаблонам:
View::composer(array('profile','dashboard'), function ($view) {
$view->with('count', User::count());
});
Если вам больше нравятся методы классов, что позволяет вам использовать регистрации в контейнере IoC, то вы можете сделать это так:
View::composer('profile', 'ProfileComposer');
Класс составителя должен иметь такой вид:
class ProfileComposer {
public function compose($view)
{
$view->with('count', User::count());
}
}
добавлено в 4.1 ()
Нет строгого правила, где должны храниться классы-составители. Вы можете поместить их в любое место, где их сможет найти автозагрузчик в соответствии с директивами в вашем файле composer.json.
Создатели
Создатели шаблонов работают почти так же, как составители, но вызываются сразу после создания объекта шаблона, а не во время его отображения в строку.Для регистрации нового создателя используйте метод PHPView::creator()
:
View::creator('profile', function ($view) {
$view->with('count', User::count());
});
Особые отклики
return Response::json(array('name' => 'Стив', 'state' => 'CA'));
Создание JSONP-ответа
return Response::json(array('name' => 'Стив', 'state' => 'CA'))
->setCallback(Input::get('callback'));
Создание отклика загрузки файла
return Response::download($pathToFile);
return Response::download($pathToFile, $name, $headers);
Класс Symfony PHPHttpFoundation
, которая управляет загрузкой файлов, требует, чтобы загружаемый файл имел ASCII-имя.
добавлено в 4.1 ()
Макрос отклика
Если вы хотите зарегистрировать пользовательский отклик, который вы смогли бы использовать повторно в различных маршрутах и контроллерах, то можете использовать метод PHPResponse::macro()
:
Response::macro('caps', function($value)
{
return Response::make(strtoupper($value));
});
Функция PHPmacro()
принимает имя в качестве первого аргумента и замыкание в качестве второго. Замыкание макроса будет выполнено при вызове имени макроса на классе PHPResponse
:
return Response::caps('foo');
Вы можете зарегистрировать свои макросы в одном из ваших файлов app/start. Или вы можете организовать свои макросы в отдельном файле, который будет подключаться в одном из старт-файлов.