{{TOC}} == Шаблоны == .(tl_note) В этой статье, так же как и во всех прочих статьях документации термины //шаблон// ("template"), //вид// ("view") и //представление// ("presentation") - полные синонимы и используются взаимозаменяемо - первый наиболее понятен и употребителен в русском языке, второй и третий происходят от концепции ((ВП:MVC)). - //прим. пер.// **Шаблоны** содержат тот самый HTML-код, отправляемый клиенту. Разделение //представления// и //((ВП:бизнес-логик+а))и// позволяет сделать код понятнее и проще для поддержания. Шаблоны хранятся в папке **application/views** и имеют расширение **.php**. Класс %%View%% предоставляет удобный интерфейс для форматирования вывода и отправки его клиенту. Посмотрим на примеры. **Код шаблона:** %%(html) Файл находится в views/home/index.php. %% **Возвращение шаблона из ((docs/v3/routing маршрута)):** %% Route::get('/', function () { return View::make('home.index'); }); %% **Возвращение шаблона из ((docs/v3/controllers контроллера)):** %% public function action_index () { return View::make('home.index'); }); %% Иногда вам нужно больше контроля за тем, что в итоге получит браузер. Например, вам может понадобиться отправить **дополнительный заголовок**. Вот как это делается: %% Route::get('/', function () { $headers = array('foo' => 'bar'); return Response::make('Привет, мир!', 200, $headers); }); %% **Отправка ответа из шаблона:** %% return Response::view('home', 200, $headers); %% === Привязка данных === Обычно ((docs/v3/routing маршрут)) или ((docs/v3/controllers контроллер)) запрашивают данные из ((docs/v3/models модели)), которые затем отображаются с помощью шаблона. Таким образом, нам нужен механизм передачи данных в шаблон - для этого есть несколько способов, вы можете выбрать наиболее удобный для себя. **Привязка данных к шаблону:** %% Route::get('/', function () { return View::make('home')->with('name', 'Джеймс'); }); %% **Доступ к ним из шаблона:** %% Привет, . %% **Привязка данных в "цепочке":** %% View::make('home') ->with('name', 'Джеймс') ->with('votes', 25); %% **Передача массива с данными:** %% View::make('home', array('name' => 'James')); %% **Привязка через "((http://ru2.php.net/manual/ru/language.oop5.overloading.php#object.set магические свойства))":** %% $view->name = 'Джеймс'; $view->email = 'example@example.com'; %% **Привязка через интерфейс ((http://ru2.php.net/manual/ru/class.arrayaccess.php ArrayAccess)):** %% $view->name = 'Джеймс'; $view['email'] = 'example@example.com'; %% **Добавление общих ("разделяемых") данных для всех форматируемых шаблонов:** %% View::share('site_name', 'Моя страничка'); %% === Вложенные шаблоны === Иногда вам нужно будет вложить один шаблон в другой. Вложенные шаблоны иногда называют //частичными// ("partials") и они помогают вам поддерживать шаблоны компактными и модульными. **Вложение шаблона используя метод %%View->nest%%:** %% View::make('home')->nest('footer', 'partials.footer'); %% **Передача данных вложенному шаблону:** %% $view = View::make('home'); $view->nest('content', 'orders', array('orders' => $orders)); %% Чтобы вставить шаблон изнутри другого шаблона используется функция **render()**: %%