Intereting Posts
Silverstripe DataObjects as Pages Part 2 tutorial – проблема с боковой панелью PHP `DateTime :: days` возвращает корзину? Как я могу найти все пробелы, исключая те, которые заключены между кавычками? Objective-C-> JSON-> PHP Array Строка parse, содержащая точки в php Не удается получить .htaccess для работы на localhost Как изменить имя файла, отображаемое в диалоговом окне «Сохранить как …» с .php на .png Возврат переменной из функции в php (возврат не работает) Предупреждение: mysql_real_escape_string (): доступ запрещен для пользователя '' @ 'localhost' (с использованием пароля: НЕТ) Отправить запрос обновления на другую страницу, открытую в браузере как получить подкатегорию третьего уровня в верхнем меню Opencart v2.3 Загрузка больших файлов через php-функцию readfile не работает mb_substr не может использоваться на PHP 5.2.6 PHP / HTML – функция isset Использование javascript и PHP для разработки собственных приложений для Android

Шаблоны в Ларавеле

Я пытаюсь заставить мой шаблон по умолчанию работать с Laravel. Я прихожу из системы Codeigniter и Phil Sturgeon, поэтому я пытаюсь сделать это аналогичным образом. Может ли кто-нибудь помочь мне с тем, что мне не хватает / что-то не так? Благодаря!

//default.blade.php (located in layouts/default) <html> <title>{{$title}}</title> <body> {{$content}} </body> </html> //end default.blade.php //home.blade.php (index view including header and footer partials) @layout('layouts.default') @include('partials.header') //code @include('partials.footer') //end home //routes.php (mapping route to home controller) Route::controller( 'home' ); //end //home.php (controller) <?php class Home_Controller extends Base_Controller { public $layout = 'layouts.default'; public function action_index() { $this->layout->title = 'title'; $this->layout->content = View::make( 'home' ); } } //end 

Вы смешиваете два разных подхода к компоновке Laravel. Таким образом вы визуализируете представление макета, включаете домашний вид и пытаетесь снова включить макет.

Мое личное предпочтение – подход к контроллеру.

Макеты контроллеров

Контроллер и макеты могут оставаться неизменными.

Примечание. В качестве ярлыка вы можете вставлять содержимое вместо View :: make, которое автоматически отображает его, когда вы эхо отзываете его в макете.

В home.blade.php удалите функцию @layout.

Изменить (пример):

Контроллеры / home.php

 <?php class Home_Controller extends Base_Controller { public $layout = 'layouts.default'; public function action_index() { $this->layout->title = 'title'; $this->layout->nest('content', 'home', array( 'data' => $some_data )); } } 

просмотров / макеты / default.blade.php

 <html> <title>{{ $title }}</title> <body> {{ $content }} </body> </html> 

просмотров / home.blade.php

Частицы включены в содержание.

 @include('partials.header') {{ $data }} @include('partials.footer') 

Планы Blade

Если вам нужен такой подход, у вас есть несколько проблем. Во-первых, вы включаете новый контент после макета. Не уверен, что преднамеренно, но сама функция @layout – это просто просто @include, ограниченный тем, что находится в самом начале представления. Поэтому, если ваш макет является закрытым html, любые включенные после этого будут добавлены после вашего макета html.

Ваш контент должен использовать здесь разделы с функцией @section и @yield в вашем макете. Верхний и нижний колонтитулы могут быть включены в макет с помощью @include или если вы хотите определить его в представлении контента, а затем поместите их в поле @section , как показано ниже. Если вы определите его таким образом, если раздел не существует, ничего не получится.

Контроллеры / home.php

 <?php class Home_Controller extends Base_Controller { public function action_index() { return View::make('home')->with('title', 'title'); } } 

просмотров / макеты / default.blade.php

 <html> <title>{{$title}}</title> <body> @yield('header') @yield('content') @yield('footer') </body> </html> 

просмотров / home.blade.php

 @layout('layouts.default') @section('header') header here or @include it @endsection @section('footer') footer @endsection @section('content') content @endsection 

В приведенном выше ответе объясняется, как шаблоны выполняются в Laravel, однако для получения дополнительных преимуществ, таких как управление темами, организованными в тематический каталог с возможностью переключения между темами, а частичные и тематические ресурсы – все это похоже на нечто похожее на библиотеку шаблонов Phil Sturgeon для CI . Вы можете проверить комплект объектов для Laravel. Ссылка здесь:

http://raftalks.github.io/Laravel_Theme_Bundle/