BMC IO DocsBMC IO Docs
IO v6
IO v7
Notes
Docs
IO v6
IO v7
Notes
Docs
  • IO Framework v7

    • О фреймворке
    • Что изменилось в 7 версии
    • Структура
    • Доступ к участкам проекта
    • Разворачивание нового проекта
  • Backend

    • Настройки проекта Conf.php
    • Настройки модуля Module.php
    • Настройки composer
    • Функции фреймворка
    • Глобальные переменные
    • Константы фреймворка
    • Event класс
    • IOCore класс
    • Route и работа с ними
    • Class и работа с ними
    • Api model и работа с ними
    • Template и работа с ними
    • Мультиязычность и словарь фраз
    • Bin скрипты и работа с ними
    • Cron скрипты и работа с ними
    • $ioSession и работа с сессией
    • $ioHash и работа с кешем
    • $iodb и работа с базой данных
  • Frontend

    • Twig шаблонизатор и работа с ним
    • Twig функции
    • Twig фильтры
    • Twig контекст
    • Настройка NPM
    • Сборка Frontend составляющей
    • Обращение к Api через JS

IO v7. Template и работа с ними

  • Описание
  • Рендер template в route
  • Рендер template в api
  • Рендер template в template
  • Реализация layout в template
  • Функции
    • render()

Описание

Template - это html файл c расширением .twig, шаблонизируемый через twig, содержащий в себе элементы интерфейса (UI) (ранее view).

Layout view — это html файл c расширением .twig, шаблонизируемый через Twig, который определяет структуру и внешний вид пользовательского интерфейса (UI).

Рендер template в route

public function actionExample()
{
    $this->render('@app/example.twig', []);
}

Рендер template в api

public function doAbc($result, $params)
{
    global $app;
    echo $app->twig->render('@app/example.twig', []);
}

Рендер template в template

{{ include('@app/example.twig') }}
<!-- или -->
{{ include('@app/example.twig', {name: 'Fabien'}) }}

Реализация layout в template

@app/layout.twig
<!DOCTYPE html>
<html>
    <head>
        {% block head %}
            <link rel="stylesheet" href="style.css"/>
            <title>{% block title %}{% endblock %} - My Webpage</title>
        {% endblock %}
    </head>
    <body>
        <div id="content">{% block content %}{% endblock %}</div>
        <div id="footer">
            {% block footer %}
                &copy; Copyright 2011 by <a href="https://example.com/">you</a>.
            {% endblock %}
        </div>
    </body>
</html>
@app/example.twig
{% extends "@app/layout.twig" %}

{% block title %}Index{% endblock %}
{% block head %}
    {{ parent() }}
    <style type="text/css">
        .important { color: #336699; }
    </style>
{% endblock %}
{% block content %}
    <h1>Index</h1>
    <p class="important">
        Welcome to my awesome homepage.
    </p>
{% endblock %}

Функции

render()

Функция отрисовывает указанный template файл, передавая в него параметры из $params.

render(string $path, array $params = []): void
Аргумент функцииТипОписаниеОбязательный
$pathstringПуть к template файлу.Да
$paramsarrayМассив параметров, передаваемых в указанный template файл.Нет

В аргументе $path для того чтобы указать, откуда брать файл шаблона, в начале указывается переменная, начинающаяся со знака @ (например @app). Где app это название модуля, которое указывается в функции module_name() в файле:

  • project/src/app/Module.php - для проекта.
  • project/src/modules/<modulename>/php/Module.php - для модуля.
Prev
Api model и работа с ними
Next
Мультиязычность и словарь фраз