13.4 – Aplicativo via Código
Você não precisa estar um passo à frente dos outros, desde que ca dada dia esteja à frente de você mesmo ontem.
Criar um aplicativo para exemplo de interação do codigo do CakePHP entre controllers, models e templates.
cake3_app_code
Criar um banco no postgresql com duas tabelas relacionadas
groups e users
Configurar o banco no app.php e a rota para apontar para Users e index
Testar
http://localhost/cake3_app_code
Criar um novo método com apenas uma mensagem/string
Criar o src/Model/Table/UsersTable.php com apenas o método abaixo
<?php
namespace App\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
class UsersTable extends Table
{
public function olaModel(){
return "Olá model do CakePHP3";
}
}
No UsersController adicione ao início
use Cake\ORM\TableRegistry;
E crie o método ola, deixando assim:
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
class UsersController extends AppController
{
public function ola()
{
$msg = TableRegistry::get('Users');
$ola = $msg->olaModel();
$this->set('ola',$ola);
}
}
No Template Users cria o arquivo ola.ctp contendo:
<b>A mensagem abaixo foi criada no método olaModel do Model UsersTable.php<br>
e enviada para a view ola.ctp pelo action ola() do Controller UsersController.php</b>
<br><br>
<?= $ola ?>
Chamar pelo navegador assim:
http://localhost/cake3_app_code/users/ola
Alternativamente criar o action index() no UsersController vazio, assim:
public function index(){
}
E criar a index.ctp contendo:
<li><?= $this->Html->link(__('Olá'), ['controller' => 'Users', 'action' => 'ola']) ?></li>
Criar um método que pega um registro da tabela users
No UsersTable.php:
Adicione ao início
use Cake\ORM\TableRegistry;
public function umUser()
{
$users = TableRegistry::get('Users');
$query = $users->find();
$user=$query->where(['username' => 'super']);
return $user;
}
No UsersController.php
public function umUser()
{
$user = TableRegistry::get('Users');
$super = $user->umUser();
$this->set('super',$super);
}
No Template/Users criar um_user.ctp contendo:
<?php
//
?>
<h3>Usuário recebido do model através do controller</h3>
<?php
foreach($super as $campos){
print ' ID - '.$campos->id.'<br>';
print ' Grupo - '.$campos->group_id.'<br>';
print ' Username - '.$campos->username.'<br>';
}
Testar
http://localhost/cake3_app_code/users/um_user
Adicionar o link abaixo para o action um_user na index.ctp
<li><?= $this->Html->link(__('Um usuário'), ['controller' => 'Users', 'action' => 'um_user']) ?></li>
Sugestões
Existe muita informação importante na documentação do CakePHP 3 online assim também como podemos aprender muito estudando o código gerado pelo bake.
Em português
https://book.cakephp.org/3.0/pt/index.html
Aqui
https://book.cakephp.org/3.0/en/index.html
Comments fornecido por CComment