/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/docs/ru
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/docs/ru/development.rst (13870B)
Расширение возможностей Bake
############################
Bake имеет расширяемую архитектуру, которая позволяет вашему приложению или плагинам
измененять или добавления его базовую функциональность. Bake использует специальный
класс, который использует механизм шаблонизатора `Twig
`_.
События Bake
============
В качестве класса представления ``BakeView`` генерирует те же события, что и любой другой класс представления,
плюс одно дополнительное событие инициализации. Однако, в то время как классы стандартного представления используют
префикс события "View.", ``BakeView`` использует префикс события "Bake.".
Событие initialize можно использовать для внесения изменений, которые применяются ко всем 'испеченным'
выводам, например, чтобы добавить другого помощника в класс вида bake, это событие может
использовать следующее::
on('Bake.initialize', function (Event $event) {
$view = $event->getSubject();
// В моих шаблонах bake, разрешить использование MySpecial helper
$view->loadHelper('MySpecial', ['some' => 'config']);
// И добавьте переменную $author, чтобы она всегда была доступна
$view->set('author', 'Andy');
});
Если вы хотите изменить выпечку из другого плагина, хорошей идеей будет - поместить
события своего плагина в файл ``config/bootstrap.php``.
События Bake могут быть полезны для внесения небольших изменений в существующие шаблоны.
Например, чтобы изменить имена переменных, используемых для выпечки файлов контроллеров/шаблонов,
можно использовать прослушивающую функцию ``Bake.beforeRender``::
on('Bake.beforeRender', function (Event $event) {
$view = $event->getSubject();
// Использовать $rows для основной переменной данных для индекса (index)
if ($view->get('pluralName')) {
$view->set('pluralName', 'rows');
}
if ($view->get('pluralVar')) {
$view->set('pluralVar', 'rows');
}
// Используйте $theOne для основной переменной данных для просмотра/редактирования (view/edit)
if ($view->get('singularName')) {
$view->set('singularName', 'theOne');
}
if ($view->get('singularVar')) {
$view->set('singularVar', 'theOne');
}
});
Вы также можете использовать события ``Bake.beforeRender`` и ``Bake.afterRender`` для
генерирования специфичного файла. Например, если вы хотите добавить определенные действия для
вашего UserController при генерации из файла **Controller/controller.twig**,
вы можете использовать следующее событие::
on(
'Bake.beforeRender.Controller.controller',
function (Event $event) {
$view = $event->getSubject();
if ($view->viewVars['name'] == 'Users') {
// добавим действия входа и выхода из системы в контроллер пользователей
$view->viewVars['actions'] = [
'login',
'logout',
'index',
'view',
'add',
'edit',
'delete'
];
}
}
);
При просмотре прослушивателей событий для конкретных шаблонов выпечки вы можете упростить
выпечку связанной логики событий и обеспечить обратные вызовы, которые легче тестировать.
Синтаксис шаблона выпечки
=========================
Файлы шаблонов Bake используют синтаксис шаблонизатора `Twig
`__.
Так, например, при выпечке такой оболочки:
.. code-block:: bash
bin/cake bake shell Foo
Используемый шаблон (**vendor/cakephp/bake/src/Template/Bake/Shell/shell.twig**)
будет выглядеть так::
`` Bake шаблон закрывающего тега php
* ``<%=`` Bake шаблон php короткого php тега echo
* ``<%-`` Bake шаблон php открытия тега, удаляющего любые введённые пробелы перед тегом
* ``-%>`` Bake шаблон php закрытия тега, любые введённые пробелы после тега
.. _creating-a-bake-theme:
Создание темы Bake
==================
Если вы хотите изменить результат, полученный командой "bake", вы можете
создать свою собственную тему('theme') для "bake", которая позволит вам заменить некоторые или все
шаблоны, которые испекает bake. Лучше всего сделать это так:
#. Выпечь новый плагин. Имя плагина - это название темы 'bake'
#. Создать новую диреткорию **plugins/[name]/src/Template/Bake/Template/**.
#. Скопируйте любые шаблоны, которые вы хотите переопределить
**vendor/cakephp/bake/src/Template/Bake/Template** для сопоставления файлов с вашим плагином.
#. При запуске выпечки используйте параметр ``--theme``, чтобы указать тему выпечки которую вы
хотите использовать. Чтобы избежать необходимости указывать этот параметр в каждом вызове, вы также можете
настроить свою тему в качестве темы по умолчанию::
Test->classSuffixes[$this->name()])) {
$this->Test->classSuffixes[$this->name()] = 'Foo';
}
$name = ucfirst($this->name());
if (!isset($this->Test->classTypes[$name])) {
$this->Test->classTypes[$name] = 'Foo';
}
return parent::bakeTest($className);
}
* **Суффикс класса** будет добавлен к имени, указанному в вашем вызове ``bake``.
В предыдущем примере он создал бы файл ``ExampleFooTest.php``.
* **Тип файла** будет использовать пространство под-пространство имён(sub-namespace), которое приведёт к файлу (относительно приложения или подключаемого модуля). В предыдущем примере, он создаст ваш тест с пространством имен ``App\Test\TestCase\Foo``.
.. meta::
:title lang=ru: Расширение возможностей Bake
:keywords lang=ru: интерфейс командной строки, разработка, выпечка, синтаксис шаблона выпечки, твинг, метки erb, процентные теги