14.1 - Repassando Informações Entre Controllers
Um dos mais importantes ingredientes na fórmula do sucesso é saber como lidar com as pessoas.
Como faço para repassar informações entre dois controllers.
Exemplo:
Eu tenho no meu banco de dados duas tabelas, uma de usuários e outra de livros, aí eu seleciono um livro que está na tabela livros, pego seu id e tenho que atualizar essa informação na tabela do usuário..
Eu tenho dois controllers, um de usuários e outro de livros, eu tenho que repassar o id do livro para o controller de usuários..
    Como passo essa informação entre controllers
    Como seleciono o id do usuário logado no sistema
    Qual o jeito correto de fazer essa atualização
Alguns actions típicos:
Autenticação de e-mail
Crédito:
https://www.youtube.com/watch?v=cEwf9PpbMcQ  
config/app.php
...
    'EmailTransport' => [
        'default' => [
            'className' => 'Mail',
            // The following keys are used in SMTP transports
            'host' => 'localhost',
            'port' => 25,
            'timeout' => 30,
            'username' => 'user',
            'password' => 'secret',
            'client' => null,
            'tls' => null,
            'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null),
        ],
		'gmail' => [
			'className' => 'Smtp',
			'host' => 'ssl://smtp.gmail.com',
			'port' => 465,
			'timeout' => 30,
			'username' => Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.',
			'password' => 'zmxn1029g',
			'client' => null,
			'tls' => null,
			'url' => env('EMAIL_TRANSPORT_DEFAULT_URL', null)
    ],
Profile
'Email' => [
        'default' => [
            'transport' => 'default',
            'from' => 'you@localhost',
            //'charset' => 'utf-8',
            //'headerCharset' => 'utf-8',
        ],
		'ribaportal' => [
			'transport' => 'gmail',
			'from' => [Este endereço de email está sendo protegido de spambots. Você precisa do JavaScript ativado para vê-lo.'=>'Portal do RibaFS'],
		],
    ],Criar classe mailler usando o bake
bin/cake bake mailer user
Criar classes no controller e no model
Abrir src/Controller/Mailer/UserMailer.php
Adicionar após a linha 
static ...
	public function welcome($user)
	{
		$this->to($user->email)
		->profile('ribaportal')
		->emailFormat('html')
		->template('welcome_email_template')
		->layout('default')
		->viewVars(['nome' => $user->name])
		->subject(sprintf('Bem vindo, %s', $user->name));
	}Criar o template para o e-mail
src/Template/Email/html/welcome_email_template.ctp
<h1>Seja bem-vindo(a), <?php echo $nome;?></h1>
<p>
    Apenas um teste de envio de e-mail pelo CakePHP.
</p>
Para testar crie um novo usuário e veja se ele enviou o e-mail.
Recuperação de senha
https://www.youtube.com/watch?v=cEwf9PpbMcQ  
Capturar numa view dados do user logado:
Capturar o group_id:
$gi=$this->request->session()->read('Auth.User.group_id');
dd($gi);
Campos Virtuais
São campos que não vêm de tabelas e existem apenas nos formulários. Um bom exemplo é o de confirmação de senha.
Também podemos criar um para calcular a idade de alguém ou para efetuar consultas a bancos de dados no model.
Crédito e Detalhes:
http://www.naidim.org/cakephp-3-tutorial-11-virtual-fields 
Comments fornecido por CComment