/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/docs/fr
NameSizeModeActions
conf.py2610644editdlrm
contents.rst970644editdlrm
development.rst122430644editdlrm
index.rst13390644editdlrm
usage.rst23320644editdlrm
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/bake/docs/fr/development.rst (12243B)
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 utilise le moteur de template `Twig `_. 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é:: on('Bake.initialize', function (EventInterface $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'); }); 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:: on('Bake.beforeRender', function (EventInterface $event) { $view = $event->getSubject(); // Utilise $rows pour la principale variable de données dans les index if ($view->get('pluralName')) { $view->set('pluralName', 'rows'); } if ($view->get('pluralVar')) { $view->set('pluralVar', 'rows'); } // Utilise $theOne pour la principale 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.twig**, vous pouvez utiliser l'event suivant:: on( 'Bake.beforeRender.Controller.controller', function (EventInterface $event) { $view = $event->getSubject(); if ($view->get('name') === 'Users') { // ajouter les actions login et logout au controller Users $view->set('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 la syntaxe de template de `Twig `__. Ainsi, par exemple, pour créer avec bake un shell comme ceci: .. code-block:: bash bin/cake bake command Foo Le template utilisé (***vendor/cakephp/bake/templates/bake/Command/command.twig**) ressemble à ceci:: declare(strict_types=1); namespace {{ namespace }}\Command; use Cake\Command\Command; use Cake\Console\Arguments; use Cake\Console\ConsoleIo; use Cake\Console\ConsoleOptionParser; /** * {{ name }} command. */ class {{ name }}Command extends Command { /** * Méthode hook pour définir le parseur d'option de cette commande. * * @see https://book.cakephp.org/4/fr/console-commands/commands.html#defining-arguments-and-options * @param \Cake\Console\ConsoleOptionParser $parser Le parseur à définir * @return \Cake\Console\ConsoleOptionParser Le parseur construit. */ public function buildOptionParser(ConsoleOptionParser $parser): ConsoleOptionParser { $parser = parent::buildOptionParser($parser); return $parser; } /** * Implémentez cette méthode avec la logique de votre commande. * * @param \Cake\Console\Arguments $args Les arguments de la commande. * @param \Cake\Console\ConsoleIo $io La console il * @return null|void|int Le code de sortie ou null pour un succès */ public function execute(Arguments $args, ConsoleIo $io) { } } Et la classe résultante construite avec bake (**src/Command/FooCommand.php**) ressemble à ceci:: 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 ``ExempleFooTest.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