Initial commit: apps.supersam24.ru
This commit is contained in:
commit
e955e1da36
6566 files changed
+1271095
No files matched your search
Vendored
+9
@@ -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
@@ -0,0 +1,7 @@
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
:caption: CakePHP Bake
|
||||
|
||||
/index
|
||||
/usage
|
||||
/development
|
||||
+293
@@ -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
@@ -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
@@ -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
|
||||
Reference in new issue
Block a user