Видеоуроки по Pagekit | Разработка

Видеоурок #04 – рендеринг представления и конфигурация модуля в Pagekit

Pagekit
Добавление в избранное
Сохранить
Видеоурок #04 – рендеринг представления и конфигурация модуля в Pagekit

В прошлых видеоуроках мы рассмотрели основы модулей и маршрутизации. Однако наш первый контроллер возвращал только чистую строку. Давайте рассмотрим рендеринг представлений (view).

Рендеринг представления из действия контроллера

Для передачи параметров в рендерер представления, действие (action) контроллера возвращает PHP массив. Зарезервированный ключ $view содержит параметры для рендерера представления, например имя файла представления для рендеринга.


public function indexAction()
{
    return [ 

    '$view' => [
            'title' => 'TODO management',
            'name' => 'todo:views/admin/index.php'
        ],
        'message' => 'Hello how's it going?'
    ];
}

Отображенное представление может быть простым PHP шаблоном. Простые параметры (например, message) доступны как переменные PHP (например, $message).

packages/pagekit/todo/views/admin/index.php:

<h3><?php echo $message; ?></h3>

Сокращение пути ресурсов

Вместо того чтобы ссылаться на полный путь файла, мы можем использовать сокращённый синтаксис. packages/pagekit/todo/views/admin/index.php превращается в todo:views/admin/index.php. Это быстрее печатать и проще читать.

Вы можете зарегистрировать сокращения с помощью целевого пути в вашем index.php. В нашем примере мы хотим указать todo: на текущий путь index.php.


'resources' => [
    'todo:' => ''
],

Конфигурация модуля

У модуля может быть конфигурационный массив, который содержит любые типы настроек. Мы можем использовать это как простое хранилище наших TODO элементов:


'config' => [
    'entries' => [
        ['message' => 'Buy milk.', 'done' => false], // ...
    ]
],

Из контроллера мы можем получить доступ к этому конфигу в качестве свойства объекта модуля:


src/Controller/TodoController.php:

use Pagekit\Application

// ...

$module = App::module('todo');
$config = $module->config;

// ...

Мы можем сохранять изменения конфига модуля в базу данных. Изменения из дефолтного конфига модуля сливаются с сохранёнными изменениями, так что мы всегда имеем валидную конфигурацию в контроллере.


// Изменяем конфиг модуля
App::config('todo')->set('entries', $entries);
Оригинальная статья:

Подпишитесь на рассылку новостей CMScafe