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 = 'fr'
+7
View File
@@ -0,0 +1,7 @@
.. toctree::
:maxdepth: 2
:caption: CakePHP Bake
/index
/usage
/development
+351
View File
@@ -0,0 +1,351 @@
Etendre Bake
############
Bake dispose d'une architecture extensible qui permet à votre application ou
à vos plugins de modifier ou ajouter la fonctionnalité de base. Bake utilise une
classe de vue dédiée qui n'utilise pas la syntaxe PHP standard.
Events de Bake
==============
Comme une classe de vue, ``BakeView`` envoie les mêmes events que toute autre
classe de vue, ainsi qu'un event initialize supplémentaire. Cependant,
alors que les classes de vue standard utilisent le préfixe d'event
"View.", ``BakeView`` utilise le préfixe d'event "Bake.".
L'event initialize peut être utilisé pour faire des changements qui
s'appliquent à toutes les sorties fabriquées avec bake, par exemple pour ajouter
un autre helper à la classe de vue bake, cet event peut être utilisé::
<?php
// config/bootstrap_cli.php
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->on('Bake.initialize', function (Event $event) {
$view = $event->getSubject();
// Dans mes templates de bake, permet l'utilisation du helper MySpecial
$view->loadHelper('MySpecial', ['some' => 'config']);
// Et ajoute une variable $author pour qu'elle soit toujours disponible
$view->set('author', 'Andy');
});
Si vous souhaitez modifier bake à partir d'un autre plugin, mettre les events
de bake de votre plugin dans le fichier ``config/bootstrap.php`` du plugin est
une bonne idée.
Les events de bake peuvent être pratiques pour faire de petits changements dans
les templates existants. Par exemple, pour changer les noms de variables
utilisés lors de la création avec bake de fichiers de controller/template, on
pourra utiliser une fonction qui écoute ``Bake.beforeRender`` pour modifier les
variables utilisées dans les templates de bake::
<?php
// config/bootstrap_cli.php
use Cake\Event\Event;
use Cake\Event\EventManager;
EventManager::instance()->on('Bake.beforeRender', function (Event $event) {
$view = $event->getSubject();
// Utilise $rows pour les principales variables de données dans les indexes
if ($view->get('pluralName')) {
$view->set('pluralName', 'rows');
}
if ($view->get('pluralVar')) {
$view->set('pluralVar', 'rows');
}
// Utilise $theOne pour les principales variable de données dans les view/edit
if ($view->get('singularName')) {
$view->set('singularName', 'theOne');
}
if ($view->get('singularVar')) {
$view->set('singularVar', 'theOne');
}
});
Vous pouvez aussi scoper les events ``Bake.beforeRender`` et
``Bake.afterRender`` dans un fichier généré spécifique. Par exemple, si vous
souhaitez ajouter des actions spécifiques à votre UsersController quand vous le
générez à partir d'un fichier **Controller/controller.ctp**, vous pouvez
utiliser l'event suivant::
<?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->subject;
if ($view->viewVars['name'] == 'Users') {
// ajouter les actions login et logout au controller Users
$view->viewVars['actions'] = [
'login',
'logout',
'index',
'view',
'add',
'edit',
'delete'
];
}
}
);
En scopant les écouteurs d'event vers des templates de bake spécifiques, vous
pouvez simplifier votre logique d'event liée à bake et fournir des callbacks
qui sont plus faciles à tester.
Syntaxe de Template de Bake
===========================
Les fichiers de template de Bake utilisent les balises erb-style (``<% %>``)
pour indiquer la logique des templates, et traitent le reste, y compris les
balises php, comme du texte.
.. note::
Les fichiers de template de Bake n'utilisent pas, et sont insensibles aux
``asp_tags`` de la configuration de php ini.
``BakeView`` intègre les balises suivantes:
* ``<%`` Une balise php ouverte de template de Bake
* ``%>`` Une balise php fermante de template de Bake
* ``<%=`` Une balise php de short-echo de template de Bake
* ``<%-`` Une balise php ouverte de template de Bake, enlevant tout espace
en tête avant la balise
* ``-%>`` Une balise php fermante de template de Bake, enlevant les espaces
à a fin après la balise
Une façon de voir/comprendre la façon dont les templates de Bake fonctionne,
spécialement quand on essaie de modifier les fichiers de template de bake, est
de créer avec bake une classe et de comparer le template utilisé avec le
template déjà présent dans le dossier **tmp/bake** de votre application.
Ainsi, par exemple, pour créer avec bake un shell comme ceci:
.. code-block:: bash
bin/cake bake shell Foo
Le template utilisé
(**vendor/cakephp/cakephp/src/Template/Bake/Shell/shell.ctp**)
ressemble à ceci::
<?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()
{
}
}
Le fichier template déjà présent (pre-processed)
(**tmp/bake/Bake-Shell-shell-ctp.php**), qui est le fichier réellement
rendu, ressemble à ceci::
<CakePHPBakeOpenTagphp
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()
{
}
}
Et la classe résultante construite avec bake (**src/Shell/FooShell.php**)
ressemble à ceci::
<?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()
{
}
}
.. _creating-a-bake-theme:
Créer un theme de bake
======================
Si vous souhaitez modifier la sortie du HTML produit par la commande "bake",
vous pouvez créer votre propre 'template' de bake qui vous permet de remplacer
certaine ou toute partie des templates que bake utilise. Pour créer un nouveau
template de bake, faîtes ce qui suit:
#. Créez un nouveau plugin avec Bake. Le nom du plugin est le nom du 'theme' de
Bake
#. Créez un nouveau répertoire **plugins/[name]/src/Template/Bake/Template/**.
#. Copiez tout template que vous souhaitez changer à partir de
**vendor/cakephp/bake/src/Template/Bake/Template** vers les
fichiers correspondants dans votre plugin.
#. Quand vous lancez bake, utilisez l'option ``--theme`` pour spécifier le
theme de bake que vous souhaitez utiliser. Pour éviter d'avoir à spécifier
cette option dans chaque appel, vous pouvez aussi définir votre thème
personnalisé à utiliser comme thème par défaut::
<?php
// in config/bootstrap.php or config/bootstrap_cli.php
Configure::write('Bake.theme', 'MyTheme');
Personnaliser les Templates de Bake
===================================
Si vous souhaitez modifier la sortie par défaut produite par la commande "bake",
vous pouvez créer vos propres templates de bake dans votre application. Cette
façon n'utilise pas l'option ``--theme`` dans la ligne de commande lors de
l'exécution de bake. La meilleure façon de faire est de faire ce qui suit:
#. Créer un nouveau répertoire **/src/Template/Bake/**.
#. Copier tout template que vous souhaitez surcharger de
**vendor/cakephp/bake/src/Template/Bake/** vers les fichiers correspondants
dans votre application.
Créer de Nouvelles Options de Commande pour Bake
================================================
Il est possible d'ajouter de nouvelles options de commandes de bake, ou de
surcharger celles fournies par CakePHP en créant des tâches dans votre
application ou dans vos plugins. En étendant ``Cake\Shell\Task\BakeTask``, bake
va trouver votre nouvelle tâche et l'inclure comme faisant partie de bake.
En exemple, nous allons faire une tâche qui créé une classe arbitraire foo.
D'abord créez le fichier de tâche **src/Shell/Task/FooTask.php**. Nous
étendrons le ``SimpleBakeTask`` pour l'instant puisque notre tâche shell sera
simple. ``SimpleBakeTask`` est abstraite et nous impose de définir 3 méthodes
qui disent à bake comment la tâche est appelée, l'endroit où devront se trouver
les fichiers qu'il va générer, et le template à utiliser. Notre fichier
FooTask.php devra ressembler à ceci::
<?php
namespace App\Shell\Task;
use Cake\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';
}
}
Une fois que le fichier a été créé, nous devons créer un template que bake peut
utiliser pour la génération de code. Créez
**src/Template/Bake/foo.ctp**. Dans ce fichier, nous
ajouterons le contenu suivant::
<?php
namespace <%= $namespace %>\Foo;
/**
* <%= $name %> foo
*/
class <%= $name %>Foo
{
// Add code.
}
Vous devriez maintenant voir votre nouvelle tâche dans l'affichage de
``bin/cake bake``. Vous pouvez lancer votre nouvelle tâche en exécutant
``bin/cake bake foo Example``.
Cela va générer une nouvelle classe ``ExampleFoo`` dans
**src/Foo/ExampleFoo.php** que votre application va
pouvoir utiliser.
Si vous souhaitez que votre appel à ``bake`` crée également un fichier de test
pour la classe ``ExampleFoo``, vous devrez surcharger la méthode ``bakeTest()``
dans la classe ``FooTask`` pour y définir le suffixe et le namespace de la
classe de votre nom de commande personnalisée::
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);
}
* Le **suffixe de classe** sera ajouté après le nom passé à ``bake``. Dans le
cadre de l'exemple ci-dessus, cela créerait un fichier ``ExampleFooTest.php``.
* Le **type de classe** sera le sous-namespace utilisé pour atteindre votre
fichier (relatif à l'application ou au plugin dans lequel vous faites le
``bake``). Dans le cadre de l'exemple ci-dessus, cela créerait le test avec le
namespace ``App\Test\TestCase\Foo``.
.. meta::
:title lang=fr: Etendre Bake
:keywords lang=fr: interface ligne de commande,development,bake view, bake template syntax,erb tags,asp tags,percent tags
+26
View File
@@ -0,0 +1,26 @@
Console Bake
############
La console Bake de CakePHP est un autre outil permettant de réaliser son
application rapidement. La console Bake peut créer chacun des ingrédients
basiques de CakePHP : models, behaviors, views, helpers, controllers,
components, cas de tests, fixtures et plugins. Et nous ne parlons pas
seulement des squelettes de classes : Bake peut créer une application
fonctionnelle complète en seulement quelques minutes. En réalité, Bake est une
étape naturelle à suivre une fois qu'une application a été prototypée.
Installation
============
Avant d'essayer d'utiliser ou d'étendre bake, assurez-vous qu'il est installé
dans votre application. Bake est disponible en tant que plugin que vous pouvez
installer avec Composer::
composer require --dev cakephp/bake:~1.0
Ceci va installer bake en tant que dépendance de développement. Cela signifie
qu'il ne sera pas installé lors d'un déploiement en production.
.. meta::
:title lang=fr: Console Bake
:keywords lang=fr: interface ligne de commande,development,bake view, bake template syntaxe,erb tags,asp tags,percent tags
+108
View File
@@ -0,0 +1,108 @@
Génération de Code avec Bake
############################
Suivant la configuration de votre installation, vous devrez peut être donner
les droits d'exécution au script bash cake ou l'appeler avec la commande
``./bin/cake bake``.
La console cake est exécutée en utilisant le CLI PHP
(Interface de Ligne de Commande). Si vous avez des problèmes en exécutant ce
script, vérifiez que :
#. le CLI PHP est installé et qu'il a les bons modules activés (ex: MySQL, intl).
#. Certains utilisateurs peuvent aussi rencontrer des problèmes si la base de
données host est 'localhost' et devront essayer '127.0.0.1' à la place.
#. Selon la configuration de votre ordinateur, vous devrez peut-être permettre
l'exécution du script bash pour permettre de lancer ``bin/cake bake``.
Avant de lancer bake, vous devrez vous assurer qu'au moins une connection à une
base de données est configurée.
Si vous exécutez la commande sans argument, ``bin/cake bake`` affichera la liste
des tâches disponibles. Vous devriez voir quelque chose comme ceci::
$ bin/cake bake
Welcome to CakePHP v3.x.x Console
---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
---------------------------------------------------------------
Les commandes suivantes avec lesquelles vous pouvez générer un squelette de
code pour votre application.
Les commandes disponibles de bake:
- all
- behavior
- cell
- component
- controller
- fixture
- form
- helper
- mailer
- migration
- migration_snapshot
- model
- plugin
- shell
- shell-helper
- template
- test
En utilisant `cake bake [name]` vous pouvez faire appel à une tâche
spécifique de bake.
Vous pouvez obtenir plus d'informations sur ce que chaque tâche fait et les
options disponibles en utilisant l'option ``--help``::
$ bin/cake bake controller --help
Welcome to CakePHP v3.x.x Console
---------------------------------------------------------------
App : src
Path: /var/www/cakephp.dev/src/
---------------------------------------------------------------
Bake a controller skeleton.
Usage:
cake bake controller [subcommand] [options] [<name>]
Subcommands:
all Bake all controllers with CRUD methods.
To see help on a subcommand use `cake bake controller [subcommand] --help`
Options:
--help, -h Display this help.
--verbose, -v Enable verbose output.
--quiet, -q Enable quiet output.
--plugin, -p Plugin to bake into.
--force, -f Force overwriting existing files without prompting.
--connection, -c The datasource connection to get data from.
(default: default)
--theme, -t The theme to use when baking code.
--components The comma separated list of components to use.
--helpers The comma separated list of helpers to use.
--prefix The namespace/routing prefix to use.
--no-test Do not generate a test skeleton.
--no-actions Do not generate basic CRUD action methods.
Arguments:
name Name of the controller to bake. Can use Plugin.name to bake
controllers into plugins. (optional)
Themes de Bake
==============
L'option theme est commune à toutes les commandes de bake, et permet de changer
les fichiers de template utilisés lors de la création avec bake. Pour créer vos
propres templates, référez-vous :ref:`à la documentation sur la création de
theme bake <creating-a-bake-theme>`.
.. meta::
:title lang=fr: Génération de Code avec Bake
:keywords lang=fr: interface ligne de commande,application fonctionnelle,base de données,configuration base de données,bash script,ingredients basiques,project,model,path path,génération de code,scaffolding,windows users,configuration file,few minutes,config,iew,shell,models,running,mysql