Configurações no CakePHP 3
Mesmo que as convenções nos livrem de estar efetuando muitas configurações no CakePHP,ainda assim precisamos configurar algumas coisas como bancos de dados, rotas e bootstrap (carga de plugins).
Todos os arquivos de configuração ficam na pasta config.
Os principais arquivos de configuração são: config/app.php
config/routes.php config/bootstrap.php
Nenhum dos 3 é obrigatório. Caso o aplicativo não use bancos de dados nem tenha plugins de terceiros não somos obrigados a alterar nenhum deles.
Quando o aplicativo usa bancos de dados precisamos alterar o app.php.
Quando desejamos personalizar as rotas também precisamos alterar o routes.php.
Quando o aplicativo usa plugins de terceiros o bootstrap.php.
app.php
Geralmente utilizado somente para configurar o banco de dados, mas existem muitas outras configurações nele. Vejamos algumas:
debug
encoding
dir – diretório da aplicação. Por default o src webroot
diretório base de imagens, css e javascript
salt – deve ser alterado. String usada no hash de senhas. Usando o composer ele já altera o salt
Error -
Email configuração
Datasources
Log
Session
Configurando o Banco de Dados
Para configurar o banco devemos indicar apenas o username, password e database na configuração default.
'Datasources' => [ 'default' => [
'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false,
'host' => 'localhost', /**
* CakePHP will use the default DB port based on the driver selected
* MySQL on MAMP uses port 8889, MAMP users will want to uncomment * the following line and set the port accordingly
*/
//'port' => 'non_standard_port_number', 'username' => 'root',
'password' => '', 'database' => 'blog', 'encoding' => 'utf8', 'timezone' => 'UTC', 'flags' => [], 'cacheMetadata' => true, 'log' => false,
Uma configuração importante aqui também é o driver do SGBD. O CakePHP 3 trabalha atualmente com os SGBDs: Mysql, Postgres, Sqlite e Sqlserver. Caso queira criar o aplicativo acessando um banco do PostgreSQL, então a linha driver assim:
'driver' => 'Cake\Database\Driver\Postgres',
Claro que também precisa alterar username, password e database.
routes.php
Neste arquivo você configura as rotas para os actions e controllers. Rotas são um importante mecanismo que permite que você conecte para diferentes URLs apenas escolhendo os controllers e seus actions.
Para uma configuração simples, suponha que você criou um aplicativo chamado cliente, que ficou na pasta cliente e criou os controllers e seus actions padrões: index(), view(), etc. Então vamos configurar o routes.php.
Logo que criou o controller ClientesController e seus actions e acessar o aplicativo assim:
Quem responderá é o action display do controller PagesController, que é um controller e action padrão, que já vem com o Cake e estão pré-configurados no routes.php como a rota padrão. Veja:
$routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']);
Para que seu controller Clientes seja mostrado juntamente com seus actions, precisamos dizer isso ao CakePHP,assim. Adicione esta linha antes da linha anterior:
$routes->connect('/pages/*', ['controller' => 'Clientes', 'action' => 'index']);
Chame seu aplicativo novamente com:
Agora sim, ele mostra o resultado do action index() do controller Clientes.
Existem muitas configurações para as rotas. Para mais detalhes veja: http://book.cakephp.org/3.0/en/development/routing.html
bootstrap.php
Veja as mensagens iniciais que ele pode disparar, acusando que este é um dos arquivos iniciais no boot do CakePHP 3.
Observe que ele já vem com várias configurações prontas. Já vem com alguns plugins carregados, como o Migrations e o DebugKit.
Carregando Plugins
Caso queira carregar um plugin de terceiro precisa adicionar uma linha logo abaixo desta: Plugin::load('Migrations');
Supondo que precise carregar um plugin chamado Acl:
Plugin::load('Acl');
Checando para ver se uma configuração foi definida
static Cake\Core\Configure::check($key)
$exists = Configure::check('Company.name');
Deletando Configuração
static Cake\Core\Configure::delete($key) Configure::delete('Company.name');
Comments fornecido por CComment