- Конфигурация страницы
- Синтаксис URL
- Динамические страницы
- Обработчики цикла страницы
- Обработка форм
- 404 стр.
- Страница ошибок
- Программная активация страниц
Все сайты имеют страницы. В October страницы представлены шаблонами страниц. Файлы шаблонов страниц находятся в подкаталоге /pages каталога theme. Имена файлов страниц не влияют на маршрутизацию, но рекомендуется назначать имена страниц соответствующим функциям страницы. Файлы должны иметь расширение htm. Для страниц требуются разделы Конфигурация и Twig, но Раздел PHP кода является необязательным. Ниже вы можете увидеть простейший пример домашней страницы.
url = "/"
==
<h1>Hello, world!</h1>
Конфигурация страницы
Конфигурация страницы определяется в [Секция конфигурации] (./cms-themes.md#configuration-section) файла шаблона страницы. Конфигурация страницы определяет параметры страницы, необходимые для маршрутизации и визуализации страницы и страницы Компоненты, которые описаны в другой статье. Для страниц поддерживаются следующие параметры конфигурации:
- url - необходимо указать URL-адрес страницы. Синтаксис URL описан ниже.
- title - заголовок страницы, обязателен.
- layout - макет страница, необязательная. Если указано, должно содержать имя файла макета, без расширения, например:
default
. - description - описание страницы для внутреннего интерфейса, необязательно.
Синтаксис URL
URL-адрес страницы определяется параметром конфигурации url. URL-адреса должны начинаться с символа прямой косой черты и могут содержать параметры. URL-адреса без параметров являются фиксированными и строгими. В следующем примере URL-адрес страницы /blog
.
url = "/blog"
URL-адреса с параметрами являются более гибкими. Страница с шаблоном URL, определенным в следующем примере, будет отображаться для любого адреса, такого как /blog/post/something
. Параметры URL могут быть доступны из компонента October или со страницы PHP code.
url = "/blog/post/:post_id"
Вот как вы можете получить доступ к параметру URL из раздела PHP страницы (более подробную информацию см. В разделе Динамические страницы:
url = "/blog/post/:post_id"
==
function onStart()
{
$post_id = $this->param('post_id');
}
==
Имена параметров должны быть совместимы с именами переменных PHP. Чтобы сделать параметр необязательным, добавьте знак вопроса после его имени:
url = "/blog/post/:post_id?"
Параметры в середине URL-адреса не могут быть необязательными. В следующем примере параметр :post_id
помечается как необязательный, но обрабатывается по мере необходимости.
url = "/blog/:post_id?/comments"
Необязательные параметры могут иметь значения по умолчанию, которые используются как запасные значения в случае, если значение реального параметра не указано в URL-адресе. Значения по умолчанию не могут содержать символы труб или вопросительные знаки. Значение по умолчанию указано после вопросительного знака. В следующем примере параметр category_id
будет иметь значение 10
для URL /blog/category
.
url = "/blog/category/:category_id?10"
Вы также можете использовать регулярные выражения для проверки параметров. Чтобы добавить выражение проверки, добавьте символ конвейеризации после имени параметра (или вопросительного знака) и укажите выражение. Символ прямой косой черты в выражениях недопустим. Примеры:
url = "/blog/:post_id|^[0-9]+$/comments" - это будет соответствовать /blog/post/10/comments
...
url = "/blog/:post_id|^[0-9]+$" - это будет соответствовать /blog/post/3
...
url = "/blog/:post_name?|^[a-z0-9\-]+$" - это будет соответствовать /blog/my-blog-post
Заметка: Подкаталоги не влияют на URL-адреса страниц - URL-адрес определяется только с параметром url.
Динамические страницы
Внутри раздела Twig шаблона страницы вы можете использовать любые собственные функции Twig, фильтры и тэги, а также расширения Twig Предоставлено в October. Любая динамическая страница требует переменных. В October страницы могут быть подготовлены по странице или макету разделу PHP кода или по компонентам. В этой статье мы расскажем, как подготовить переменные в разделе PHP.
Обработчики цикла страницы
В разделе PHP страниц и макетов можно определить две специальные функции: onStart()
и onEnd()
. Функция onStart()
выполняется в начале рендеренга страницы. Функция onEnd()
выполняется перед отображением страницы и после рендеренга страницы компонента. В onStart и onEnd вы можете вводить переменные в среду Twig. Используйте array notation
для передачи переменных на страницу:
url = "/"
==
<?
function onStart()
{
$this['hello'] = "Hello world!";
}
?>
==
<h3>{{ hello }}</h3>
Следующий пример более сложен. Он показывает, как загрузить коллекцию сообщений в блоге из базы данных и отобразить на странице (плагин Acme\Blog например).
url = "/blog"
==
<?
use Acme\Blog\Classes\Post;
function onStart()
{
$this['posts'] = Post::orderBy('created_at', 'desc')->get();
}
?>
==
<h2>Последние посты</h2>
<ul>
{% for post in posts %}
<h3>{{ post.title }}</h3>
{{ post.content }}
{% endfor %}
</ul>
Переменные по умолчанию и расширения Twig, предоставленные October, описаны в руководстве по разметке.
Обработка форм
Вы можете обрабатывать стандартные формы с помощью методов-обработчиков, определенных на странице или макете PHP section (обработка запросов AJAX объясняется в статье AJAX Framework). Используйте функцию form_open()
(./cms-markup.md#standard-form), чтобы определить форму, которая ссылается на обработчик события. Пример:
{{ form_open({ request: 'onHandleForm' }) }}
Введите строку: <input type="text" name="value"/>
<input type="submit" value="Submit me!"/>
{{ form_close() }}
<p>Последняя отправленное значение: {{ lastValue }}</p>
Функция onHandleForm может быть определена на странице или макете разделе PHP кода следующим образом:
function onHandleForm()
{
$this['lastValue'] = post('value');
}
Обработчик загружает значение с помощью функции post()
и инициализирует переменную атрибута страницы lastValue
, которая отображается под формой в первом примере.
Заметка: Если обработчик с таким же именем определен в макете, странице и странице компонента, October выполнит обработчик страницы. Если обработчик определен в компоненте и макете, будет выполнен обработчик макета. Приоритет обработчика: страница, макет, компонент. Если вы хотите обратиться к обработчику, определенному в конкретном компоненте, используйте имя компонента или псевдоним в ссылке обработчика:
{{ form_open({ request: 'myComponent::onHandleForm' }) }}
Страница 404
Если тема содержит страницу с URL-адресом /404
, она отображается, когда система не может найти запрашиваемую страницу.
Страница ошибки
По умолчанию любые ошибки будут отображаться с подробной страницей ошибки, содержащей содержимое файла, номер строки и трассировку стека, где произошла ошибка. Вы можете отобразить страницу дружественных ошибок, установив значение конфигурации customErrorPage
в true в скрипте app/config/cms.php
и создав страницу с URL-адресом /error
.
Программное включение асетсов на страницу
При необходимости вы можете вставлять ресурсы (файлы CSS и JavaScript) на страницы с помощью методов контроллера addCss()
и addJs()
. Это можно сделать в функции onStart()
, определенной в секции PHP шаблона страницы или макета. Пример:
function onStart()
{
$this->addCss('assets/css/hello.css');
$this->addJs('assets/js/app.js');
}
Если путь, указанный в аргументе метода addCss()
и addJs()
, начинается со слэша (/), то он будет относиться к корню сайта. Если путь к активам не начинается с косой черты, то он относится к теме.
Чтобы выводить внедренные активы на страницы или макеты, используйте тег {%styles%} и {%scripts%}. Пример:
<head>
...
{% styles %}
</head>
<body>
...
{% scripts %}
</body>