Урок 2. Ведение в макеты Yii2
Если вы заметили, когда мы визуализируем наши представления, мы получаем много дополнительного материала на наших страницах.
Это из-за макетов.
Если вы хотите отключить макет, вы можете это сделать.
$this->layout = false; // in the route functionВ результате мы убираем дополнительный контент. Далее мы научимся создавать собственные макеты.
Макеты
Макеты позволяют нам создавать шаблоны контейнеров, в которые мы можем вводить контент. Мы обычно используем макеты в качестве шаблона, содержащего наши первичные и вторичные меню. Все, что мы не хотим перерисовывать на каждой странице, может быть в нашем макете.
Давайте создадим новый макет. В нашем каталоге views/layouts мы создаем файл под названием primary.php и добавьте содержимое ниже
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><?php echo $this->title;?></title> </head> <body> <?php echo $content;?> </body> </html>Теперь в нашей функции маршрутизатора мы можем выбрать макет для использования с помощью
$this->layout = "primary"; // in router functionВыше мы выбираем primary.php файл в качестве макета для функции контроллера маршрутизатора.
В нашем макете у нас есть доступ к $this->view->title, который является переменной класса класса Controller.
Мы можем переопределить это в нашей функции контроллера.
Полная функция показана ниже
public function actionFaq(){ $this->layout = "primary"; // use primary layout $this->view->title = "This is a faq page"; // set the page title $questions = [ 'How hard is yii2', 'What will you need to start development', 'Is PHP easy to learn' ]; return $this->render('faq',['questions'=>$questions]); }Результат показан ниже.
Настройка глобального макета
Вместо того чтобы каждый раз устанавливать макет, мы можем установить его для всех вьюшек в контроллере, выполнив следующие действия
public $layout = "main";Таким образом, все функции маршрута будут использовать этот макет, если он не будет перезаписан с помощью функции.
Пример можно увидеть с нашим контроллером dashboard
class DashboardController extends Controller { public $layout = "main"; public function actionHelp(){ $this->view->title ="The dashboard view"; return $this->render('hello'); } }
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.