В Laravel 3 я это делал.
<?php render('partials.header'); ?>
Это было сделано в представлениях «PHP», без использования шаблонов Blade Laravel.
Что эквивалентно этому в версии 4?
Я пытался
<?php @include('partials.header'); ?>
Это не работает.
Если я сделаю
@include('partials.header')
Мне нужно сохранить мой файл как «.blade.php»
Как включить «subview» без использования шаблона клинка?
Существуют различные способы включения представления в представление в Laravel 4. Ваш выбор будет зависеть от любого из результатов, описанных ниже …
Вы можете скомпилировать (визуализировать) частичные представления в соответствующем контроллере и передать эти представления в главный вид с использованием массива $data['']
.
Это может стать утомительным по мере увеличения количества просмотров, но эй, по крайней мере, есть много гибкости 🙂
См. Приведенный ниже код:
... public function showMyView() { /* Header partial view */ $data['header'] = View::make('partials.header'); /* Flexible enough for any kind of partial views you require (eg a Header Menu partial view) */ $data['header_menu'] = View::make('partials.header_menu'); /* Footer partial view */ $data['footer'] = View::make('partials.footer'); return View::make('myView', $data); } ...
Вы можете включить частичные значения выше, как указано ниже (в любой позиции в вашем коде просмотра):
<html> <head></head> <body> <!-- include partial views --> <?php echo ($header) ?> <?php echo ($header_menu) ?> <div id="main-content-area"></div> <?php echo ($footer) ?> </body> </html>
Ваши частичные представления теперь будут добавлены в ваш основной вид.
На самом деле гораздо проще, чем использовать метод выше: просто включите это в html представления …
<html> <head></head> <body> <!-- include partial view: header --> <?php echo View::make('partials.header') ?> <div id="main-content-area"> </div> <!-- include partial view: footer --> <?php echo View::make('partials.footer') ?> </body> </html>
Убедитесь, что структура папок для частичных файлов – [views / partials / header.php] , чтобы обеспечить правильный путь к элементу View :: make () функции Laravel.
Если вы попытаетесь передать $data['page_title']
в контроллер, вложенные представления не получат данные.
Чтобы передать данные этим вложенным представлениям, вам необходимо сделать это следующим образом:
<html> <head></head> <body> <?php /* Pass page title to header partial view */ $data ['page_title'] = "My awesome website"; echo View::make('partials.header', $data); ?> <div id="main-content-area"></div> <?php echo View::make('partials.footer') ?> </body> </html>
В вопросе четко сказано: «Без использования шаблона Blade», поэтому я постарался дать решение, которое не включает код шаблона Blade.
Попробуйте это сделать
View::make('folder.viewFile')->nest('anyname', 'folder.FileName');
Затем вы получите доступ к вложенному файлу просмотра из вашего шаблона {{ $anyname }}
таким образом, что вам не нужно включать файлы в ваше представление, и это также должно работать и с файлом .php.
Я не уверен, сколько людей использовали Laravel 4 в этом посте, начиная с этой записи, но если вы хотите включить частичные или отдельные типы просмотров, вы можете сделать это с помощью @includes
например, если вы хотите, чтобы папка partials для вашего заголовка, нижнего колонтитула, боковой панели и т. д.
создать каталог для
app/views/partials
Затем создайте частичный
app/views/partials/navigation.blade.php
Затем в вашем файле шаблона мастера добавьте строку
@include('partials.navigation')
Это все, что нужно.
** Бонус вы также можете передавать данные частичным или включать вложенные частицы в частичном
Я знаю, что это немного поздний ответ, но я подумал, что, поскольку я не видел этого решения среди других ответов, все было в порядке.
Если вы хотите добавить свой верхний и нижний колонтитул на каждую страницу, я бы добавил их в фильтры до и после. Просто перейдите в файл filters.php в папке приложения.
App::before(function($request) { echo View::make('partials.header'); }); App::after(function($request, $response) { echo View::make('partials.footer'); });
При этом вам не нужно добавлять что-либо в файлы просмотра, чтобы их включить.
Вы можете использовать функцию гнезда View
View::make('default.layout')->nest('header', 'default.header');
Используйте третий параметр для передачи данных в шаблон
View::make('default.layout')->nest('header', 'default.header', ['name' => 'John Doe', 'test' => 'It works!']);
по вашим представлениям / default / header.blade.php
<div>hey {{ $name }}! {{ $test }}</div>
Я все еще довольно новичок в Laravel, но я думаю, что это довольно просто …
Route::get('/', function() { $data['title'] = 'sample'; return View::make('page', $data); }); # /views/partials/header.php # /views/partials/footer.php View::composer('page', function($view) { $view->with('header', View::make('partials.header', $view->getData())); $view->with('footer', View::make('partials.footer', $view->getData())); });
См. Laravel View Composers .. http://laravel.com/docs/responses#view-composers
/views/page.php
<?php echo $header; ?> <div>CONTENT</div> <?php echo $footer; ?>
Изнутри представления просто выделите другое представление:
echo View::make('header'); //This will look for a view called header.php