Initial commit: apps.prometeysev.ru

This commit is contained in:
root committed 2026-10-22 00:22:57 +03:00
commit 96ccabcd8b
6561 files changed
+1270349

No files matched your search

+9
View File
@@ -0,0 +1,9 @@
import sys, os
# Append the top level directory of the docs, so we can import from the config dir.
sys.path.insert(0, os.path.abspath('..'))
# Pull in all the configuration options defined in the global config file..
from config.all import *
language = 'ru'
+7
View File
@@ -0,0 +1,7 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP Bake
/index
/usage
/development
+293
View File
@@ -0,0 +1,293 @@
Расширение возможностей Bake
############################
Bake имеет расширяемую архитектуру, которая позволяет вашему приложению или плагинам
измененять или добавления его базовую функциональность. Bake использует специальный
класс, который использует механизм шаблонизатора `Twig <https://twig.symfony.com/>`_.
События Bake
============
В качестве класса представления ``BakeView`` генерирует те же события, что и любой другой класс представления,
плюс одно дополнительное событие инициализации. Однако, в то время как классы стандартного представления используют
префикс события "View.", ``BakeView`` использует префикс события "Bake.".
Событие initialize можно использовать для внесения изменений, которые применяются ко всем 'испеченным'
выводам, например, чтобы добавить другого помощника в класс вида bake, это событие может
использовать следующее::
<?php
// config/bootstrap_cli.php
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->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``::
<?php
// config/bootstrap_cli.php
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->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**,
вы можете использовать следующее событие::
<?php
// config/bootstrap_cli.php
use Cake\Event\Event;
use Cake\Event\EventManager;
use Cake\Utility\Hash;
EventManager::instance()->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 <https://twig.symfony.com/doc/2.x/>`__.
Один из способов увидеть/понять, как работают шаблоны выпечки, особенно при попытке
изменить файлы шаблонов выпечки, это - испечь класс и сравнить используемый шаблон
с предварительно обработанным файлом шаблона, который остаётся в приложении в папке
**tmp/bake**.
Так, например, при выпечке такой оболочки:
.. code-block:: bash
bin/cake bake shell Foo
Используемый шаблон (**vendor/cakephp/bake/src/Template/Bake/Shell/shell.twig**)
будет выглядеть так::
<?php
namespace {{ namespace }}\Shell;
use Cake\Console\Shell;
/**
* {{ name }} shell command.
*/
class {{ name }}Shell extends Shell
{
/**
* main() method.
*
* @return bool|int Success or error code.
*/
public function main()
{
}
}
И итоговый испеченный класс (**src/Shell/FooShell.php**) будет выглядеть так::
<?php
namespace App\Shell;
use Cake\Console\Shell;
/**
* Foo shell command.
*/
class FooShell extends Shell
{
/**
* main() method.
*
* @return bool|int Success or error code.
*/
public function main()
{
}
}
.. note::
До версии 1.5.0 bake использовал пользовательские теги erb-стиля внутри файлов шаблонов .ctp
* ``<%`` Bake шаблон открывающего тега php
* ``%>`` 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``, чтобы указать тему выпечки которую вы
хотите использовать. Чтобы избежать необходимости указывать этот параметр в каждом вызове, вы также можете
настроить свою тему в качестве темы по умолчанию::
<?php
// В config/bootstrap.php или config/bootstrap_cli.php
Configure::write('Bake.theme', 'MyTheme');
Настройка шаблонов Bake
=======================
Если вы хотите изменить вывод по умолчанию, созданный командой "bake", вы можете
создать свои собственные шаблоны выпечки в своём приложении. Этот способ не использует
``--theme`` в командной строке при выпечке. Лучше всего сделать это так:
#. Создайте новую директорию(папку) **/src/Template/Bake/**.
#. Скопируйте шаблоны которые вы хотите изменить в вашем приложении в
**vendor/cakephp/bake/src/Template/Bake/**.
Создание новых параметров команды Bake
======================================
Можно добавить новые параметры команды bake или переопределить те, которые предоставлены
CakePHP, создавая задачи в своём приложении или плагинах. Расширение
``Bake\Shell\Task\BakeTask`` найдёт вашу новую задачу и включит ее как часть выпечки.
В качестве примера мы создадим задачу, которая создает произвольный класс foo. Первым делом,
создайте сам файл задачи **src/Shell/Task/FooTask.php**. Мы расширим
``SimpleBakeTask``, поскольку наша задача для оболочки будет простой. ``SimpleBakeTask``
является абстрактным и требует, чтобы мы определили 3 метода, которые подсказывают ему, какова задача
которую должен генерировать файл, и какой шаблон при этом использовать. Наш файл FooTask.php должен выглядеть так::
<?php
namespace App\Shell\Task;
use Bake\Shell\Task\SimpleBakeTask;
class FooTask extends SimpleBakeTask
{
public $pathFragment = 'Foo/';
public function name()
{
return 'foo';
}
public function fileName($name)
{
return $name . 'Foo.php';
}
public function template()
{
return 'foo';
}
}
Как только этот файл будет создан, нам нужно создать шаблон, который bake может использовать
для генерации кода. Создайте файл **src/Template/Bake/foo.twig**. В этом файле добавим
следующее содержание::
<?php
namespace {{ namespace }}\Foo;
/**
* {{ $name }} foo
*/
class {{ name }}Foo
{
// Добавить код.
}
Теперь вы должны увидеть свою новую задачу в выводе ``bin/cake bake``. Теперь можете
запустить новую задачу, прописав в командной строке: ``bin/cake bake foo Example``.
Это создаст новый класс ``ExampleFoo`` в **src/Foo/ExampleFoo.php** для вашего приложения.
Если вы хотите, чтобы вызов ``bake`` ищё и создавал тестовый файл для вашего
``ExampleFoo``, вам нужно перезаписать метод ``bakeTest()`` в
``FooTask`` для регистрации команды суффикса класса и пространства имен для вашего
пользовательского интерфейса::
public function bakeTest($className)
{
if (!isset($this->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, процентные теги
+24
View File
@@ -0,0 +1,24 @@
Консоль Bake
############
Bake консоль CakePHP - это еще один инструмент для быстрой разработки на фреймворке CakePHP.
Консоль Bake может создать любой из базовых компонентов или все сразу: models,
behaviors, views, helpers, controllers, components, test cases, fixtures и plugins.
Речь идет не только о каркасе приложения: Bake консоль создает полностью функционирующее приложение всего за пару минут.
Bake это естественный шаг для статической генерации кода.
Установка
=========
Перед тем, как использовать Bake, убедитесь, что он установлен в вашем приложении.
Bake это отдельный плагин и вы можете установить его с помощью Composer::
composer require --dev cakephp/bake:~1.0
Команда выше установит Bake в зависимости от разработки.
Это значит, что Bake не будет установлен, когда вы делаете деплой на продакшн сервер.
.. meta::
:title lang=ru: Консоль Bake
:keywords lang=ru: интерфейс командной строки,разработка,bake view, bake template syntax,erb tags,asp tags,percent tags
+131
View File
@@ -0,0 +1,131 @@
Генерация кода с помощью Bake
#############################
Консоль cake запускается с использованием PHP CLI (интерфейса командной строки).
Если у вас возникли проблемы с запуском скрипта, убедитесь, что:
#. У вас установлен PHP CLI и что у него есть соответствующие включённые модули
(например: MySQL, intl).
#. У пользователей также могут быть проблемы, если хост базы данных является
'localhost' вмеcто этого можно попробовать '127.0.0.1', поскольку localhost
может вызвать проблемы с PHP CLI.
#. В зависимости от того, как настроен ваш компьютер, вам может потребоваться
установить права выполнения на скрипт bash, чтобы вызвать его, используя
``bin/cake bake``.
Перед запуском bake вы должны убедиться, что у вас есть хотя бы одна база данных и
соединение настроено.
При запуске без аргументов ``bin/cake bake`` выводит список доступных
заданий. Вы должны увидеть что-то вроде::
$ bin/cake bake
Welcome to CakePHP v3.4.6 Console
---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
PHP : 5.6.20
---------------------------------------------------------------
The following commands can be used to generate skeleton code for your application.
Available bake commands:
- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- mailer
- migration
- migration_diff
- migration_snapshot
- model
- plugin
- seed
- shell
- shell_helper
- task
- template
- test
By using `cake bake [name]` you can invoke a specific bake task.
Вы можете получить больше дополнительной информации о том, что делает каждая задача, и какие параметры
доступны, если используете ключ ``--help``::
$ bin/cake bake --help
Welcome to CakePHP v3.4.6 Console
---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
PHP : 5.6.20
---------------------------------------------------------------
The Bake script generates controllers, models and template files for
your application. If run with no command line arguments, Bake guides the
user through the class creation process. You can customize the
generation process by telling Bake where different parts of your
application are using command line arguments.
Usage:
cake bake.bake [subcommand] [options]
Subcommands:
all Bake a complete MVC skeleton.
behavior Bake a behavior class file.
cell Bake a cell class file.
component Bake a component class file.
controller Bake a controller skeleton.
fixture Generate fixtures for use with the test suite. You
can use `bake fixture all` to bake all fixtures.
form Bake a form class file.
helper Bake a helper class file.
mailer Bake a mailer class file.
migration Bake migration class.
migration_diff Bake migration class.
migration_snapshot Bake migration snapshot class.
model Bake table and entity classes.
plugin Create the directory structure, AppController class
and testing setup for a new plugin. Can create
plugins in any of your bootstrapped plugin paths.
seed Bake seed class.
shell Bake a shell class file.
shell_helper Bake a shell_helper class file.
task Bake a task class file.
template Bake views for a controller, using built-in or
custom templates.
test Bake test case skeletons for classes.
To see help on a subcommand use `cake bake.bake [subcommand] --help`
Options:
--connection, -c Database connection to use in conjunction with `bake
all`. (default: default)
--everything Bake a complete MVC skeleton, using all the available
tables. Usage: "bake all --everything"
--force, -f Force overwriting existing files without prompting.
--help, -h Display this help.
--plugin, -p Plugin to bake into.
--prefix Prefix to bake controllers and templates into.
--quiet, -q Enable quiet output.
--tablePrefix Table prefix to be used in models.
--theme, -t The theme to use when baking code. (choices:
Bake|Migrations)
--verbose, -v Enable verbose output.
Темы Bake
=========
Параметр темы является общим для всех команд bake, так же bake позволяет изменять
файлы шаблонов, используемые при 'выпечке'. Чтобы создать свои собственные шаблоны см.
:ref:`документация по созданию темы<creating-a-bake-theme>`.
.. meta::
:title lang=ru: Генерация кода с помощью Bake
:keywords lang=en: command line interface,functional application,database,database configuration,bash script,basic ingredients,project,model,path path,code generation,scaffolding,windows users,configuration file,few minutes,config,iew,shell,models,running,mysql