Урок 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты