5 - Gerando CRUD com Bake e muito mais
Algumas pessoas querem que algo aconteça, outras desejam que aconteça, outras fazem acontecer.
Michael Jordan
http://book.cakephp.org/3.0/en/bake.html
A console bake do CakePHP é um outro esforço para que você esteja rodando o CakePHP rapidamente. A console do bake pode criar qualquer um dos códigos básicos do CakePHP: models, behaviors, views, helpers, controllers, components, test cases, fixtures e plugins. E não estamos falando apenas de esqueletos de classes, o bake pode criar uma aplicação inteiramente funcional em poucos minutos.
Pré-requisitos
A console do bake requer:
- PHP CLI
- extensão intl
- Pelo menos um SGBD instalado e configurado na aplicação atual
Executando o bake
cd /var/www/html/cliente
bin/cake bake
Mostrará:
The following commands can be used to generate skeleton code for your application.
Available bake commands:
- all
- behavior
- cell
- command
- component
- controller
- fixture
- form
- helper
- mailer
- middleware
- migration
- migration_diff
- migration_snapshot
- model
- plugin
- seed
- shell
- shell_helper
- task
- template
- test
- twig_template
By using `cake bake [name]` you can invoke a specific bake task.
Obtendo ajuda para controllers com o bake
bin/cake bake controller --help
Veja:
bin/cake bake controller --help
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:
--actions The comma separated list of actions to generate. You
can include custom methods provided by your template
set here.
--components The comma separated list of components to use.
--connection, -c The datasource connection to get data from.
(default: default)
--force, -f Force overwriting existing files without prompting.
--help, -h Display this help.
--helpers The comma separated list of helpers to use.
--no-actions Do not generate basic CRUD action methods.
--no-test Do not generate a test skeleton.
--plugin, -p Plugin to bake into.
--prefix The namespace/routing prefix to use.
--quiet, -q Enable quiet output.
--theme, -t The theme to use when baking code. (choices:
Bake|Migrations|WyriHaximus/TwigView)
--verbose, -v Enable verbose output.
Arguments:
name Name of the controller to bake (without the `Controller` suffix).
You can use Plugin.name to bake controllers into plugins.
Versatilidade do bake
Ajuda para plugins
bin/cake bake plugin --help
Gerar tudo para Clientes (controller, model, templates, etc)
bin/cake bake all Clientes
Gerar novamente forçando
Caso já tenha gerado um código e queira gerar novamente evitando as perguntas para sobrescrever os arquivos gerados, use --force ou -f, assim:
bin/cake bake all Clientes -f
Gerar um controller:
bin/cake bake controller Clientes
Gerar controller sem actions:
bin\cake bake controller --no-actions Clientes
Gerar Componente
bin/cake bake component Calculo
Gerar um Template
bin/cake bake template Clientes
Gerar Helper
bin/cake bake helper MeuForm
Gerar Cell
bin/cake bake cell MinhaCelula
Gerar Form
bin/cake bake form MeuForm
Gerar um Model
bin/cake bake model Clientes
Gerar Behavior
bin/cake bake behavior MeuBehavior
Gerar apenas controller, model e template
bin/cake bake controller clientes
bin/cake bake model clientes
bin/cake bake template clientes index (somente a index)
Gerando plugin
bin/cake bake all --plugin CakePtbr articles
Agora gerar o código completo para o plugin
bin/cake bake all -p CakeAdmin groups
bin/cake bake all -p CakeAdmin users
bin/cake bake all -p CakeAdmin permissions
bin/cake bake all -p CakeAdmin customers
Criar plugin ContactManager com tabela contacts para o aplicativo cliente
cd /var/www/html/cliente
bin/cake bake plugin ContactManager
bin/cake bake controller --plugin ContactManager Contacts
bin/cake bake migration CreateContacts title:string body:text created modified
bin/cake bake migration CreateGroups name:string created modified
bin/cake bake migration CreateUsers username:string password:string created modified
bin/cake migrations migrate
bin/cake bake model --plugin ContactManager Contacts
bin/cake bake template --plugin ContactManager Contacts
Estrutura de Arquivos do Plugin
/src /plugins /ContactManager /config /src /Plugin.php /Controller /Component /Model /Table /Entity /Behavior /View /Helper /Template /Layout /tests /TestCase /Fixture /webroot
Regerando o autoloader
composer dump-autoload
Limpando o cache
composer clear-cache
Observação
Existem alguns recursos que não são gerados ou auxiliados pelo bake, como o element.
Outros comandos
bin/cake bake fixture groups
bin/cake bake test users
Garantir que não use cache:
bin/cake bake model comments –force
bin/cake bake model issues –force
bin/cake orm_cache clear
Cache do ORM
Reconstruir o cache dos metadados de todas as tabelas da conexão default
bin/cake orm_cache build --connection default
Para reconstruir o cache dos metadados apenas da tabela artigos
bin/cake orm_cache build --connection default artigos
Remover o cache de todos os metadados:
bin/cake orm_cache clear
Remover o cache de todos os metadados da tabela aratigos
bin/cake orm_cache clear artigos
Criando Model para o Plugin
bin/cake bake model --plugin Admin Groups
bin/cake bake model --plugin Admin Users
Criando Templates para o Plugin
bin/cake bake template --plugin Admin Groups
bin/cake bake template --plugin Admin Users
Criar somente a view login.ctp para o Plugin
bin/cake bake template --plugin Admin Users login
Observação importante:
Atualmente na versão 3, idealmente devemos criar plugins para a pasta vendor, que são hospedados num repositório público, como o GitHub e publicados num repositório do composer, como o Packagist. Assim podemos instalar e publicar o plugin pela linha de comando com o composer.
A oitava maravilha do mundo
Gosto de dizer que o bake é a oitava maravilha do mundo da programação web. Realmente me maravilho com seus resultados mágicos e ele me prende ao Cake.
Mas gostaria de deixar aqui um alerta, especialmente para o programador iniciante: evite ficar preso somente ao bake e se satisfazer com o resultado dele. Ao contrário estude o código gerado por ele, que por sinal é muito bom, para então conseguir adaptar seus aplicativos para as tuas necessidades e dos teus clientes.
Comodismo é algo que acaba com o programador e me parece que com qualquer área da vida do ser humano. A curiosidade, a motivação, o interesse em estudar, aprender, mexer, customizar, isso sim, devem estar presentes na vida do programador e do ser humano, me parece.
Comments fornecido por CComment