Шаблонизатор
Компонент 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