Шаблонизатор

Компонент View отвечает за управление шаблонами вашего приложения. Он предоставляет инструменты для построения пользовательских интерфейсов — от простых HTML-страниц до реактивных приложений с Vue.js.

В Imhotep шаблоны — это файлы, которые определяют внешний вид вашего приложения. Они могут быть написаны на чистом PHP или с использованием шаблонизатора Moon, который предоставляет удобный синтаксис для работы с данными, условиями, циклами и компоновкой.

Где хранятся шаблоны?

По умолчанию шаблоны хранятся в папке resources/views:

resources/
└── views/
    ├── welcome.moon.php
    ├── about.php
    ├── layouts/
    │   └── app.moon.php
    └── partials/
        ├── header.moon.php
        └── footer.moon.php
PHP

Конфигурация

Настройки шаблонов находятся в файле config/view.php. Изучите файл конфигурации — в нём каждый параметр подробно описан.

Отрисовка шаблона

use Imhotep\Facades\View;

class WelcomeController
{
    public function index()
    {
        // Через фасад
        return View::make('welcome', ['name' => 'Imhotep']);
        
        // Или через глобальную функцию
        return view('welcome', ['name' => 'Imhotep']);
    }
}
PHP

Передача данных в шаблон

// Массив данных
view('profile', ['user' => $user, 'settings' => $settings]);

// Цепочка with()
view('profile')
    ->with('user', $user)
    ->with('settings', $settings);
// или
view('profile')
    ->withUser($user)
    ->withSettings($settings);

// Общие данные для всех шаблонов
View::share('appName', 'Мое приложение');
View::share('version', '1.0.0');
PHP

Настройка и расширение

Добавление новых движков

Вы можете добавить поддержку новых форматов через сервис-провайдер:

namespace App\Providers;

use Imhotep\Framework\Providers\ServiceProvider;
use Imhotep\View\Engines\EngineManager;

class ViewServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->afterResolving('view.engine.resolver', function (EngineManager $manager) {
            // Регистрация нового движка для Markdown
            $manager->register('markdown', function () {
                return new MarkdownEngine();
            });
        });
    }
}
PHP

Добавление новых расширений файлов

// В сервис-провайдере
use Imhotep\Facades\View;

public function boot()
{
    $finder = View::getFinder();
    
    // Добавление новых расширений
    $finder->extensions = array_merge(
        $finder->extensions,
        ['md', 'markdown', 'twig']
    );
}
PHP

Пространства имен для шаблонов

// Добавление пространства имен
View::addNamespace('admin', __DIR__.'/views/admin');

// Использование
view('admin.dashboard');
view('admin::dashboard'); // То же самое
PHP

Консольные команды

Очистка кэша

php imhotep view:clear
BASH