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

тегизаметки, yii2, php, фреймворки, уроки по yii2




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 15. Базовые операции со строками C#
Отправка смс на C#
Сколько памяти расходует мое приложение Java?