14.3 - Trabalhando com session no CakePHP
Nossa maior fraqueza está em desistir. A maneira certa de ter sucesso é tentar apenas mais uma vez. (Thomas Edison)
Mudando o session de php para database
Primeiro configurar em config/app.php
Ao final:
'Session' => [
'defaults' => 'php',
],
Mudar para
'Session' => [
'defaults' => 'database',
],
Veja que as alternativas são:
* - 'php' - Uses settings defined in your php.ini.
* - 'cake' - Saves session files in CakePHP's /tmp directory.
* - 'database' - Uses CakePHP's database sessions.
* - 'cache' - Use the Cache class to save sessions.
E existem várias opções:
* - `cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'. Avoid using `.` in cookie names,
* as PHP will drop sessions from cookies with `.` in the name.
* - `cookiePath` - The url path for which session cookie is set. Maps to the
* `session.cookie_path` php.ini config. Defaults to base path of app.
* - `timeout` - The time in minutes the session should be valid for.
* Pass 0 to disable checking timeout.
* Please note that php.ini's session.gc_maxlifetime must be equal to or greater
* than the largest Session['timeout'] in all served websites for it to have the
* desired effect.
* - `defaults` - The default configuration set to use as a basis for your session.
* There are four built-in options: php, cake, cache, database.
* - `handler` - Can be used to enable a custom session handler. Expects an
* array with at least the `engine` key, being the name of the Session engine
* class to use for managing the session. CakePHP bundles the `CacheSession`
* and `DatabaseSession` engines.
* - `ini` - An associative array of additional ini values to set.
Exemplo:
'Session' => [
'defaults' => 'php',
'timeout' => 12 * 60, //in minutes
'cookie' => 'application-name',
],
Configurar por quanto tempo o usuário ficará conectado no aplicativo.
Em config/app.php:
'Session' => [
'defaults' => 'php',
'timeout'=>24*60, //minutos, que dá 24horas
'cookie' => 'CAKEPHP',
],
Sempre que alterar o cache limpe o cache e arquivos temporários.
Após efetuar as alterações immporte o script de:
config/schema/session.sql para seu banco de dados
Algumas funções nativas e globais do CakePHP 3
__(string $string_id[, $formatArgs]) - Manipula localizações nas aplicações do CakePHP. Usada por padrão nas views geradas pelo bake para mostrar strings. Exemplo:
<?= __('Ações') ?>
debug(mixed $var, boolean $showHtml = null, $showFrom = true)
dd(mixed $var, boolean $showHtml = null) - semelhante a debug() mas também encerra o processamento ao final
pr(mixed $var) - Encapsula print_r(), com a adição de tags <pre> ao redor da saída.
pj(mixed $var) - semelhante a pr() mas para saída em json
h(string $text, boolean $double = true, string $charset = null) - Encapsulamento da função htmlspecialchars(). Importante nas views. Usar h() quando mosrando informações para prevenir problemas de HTML injection.
Algumas Constantes do Core
APP - Path para o diretório da aplicação. Retorna /var/www/html/nomeApp/src
CAKE - path do diretório dos arquivos do Cake. No caso este: vendor/cakephp/cakephp/src/
CORE_PATH - Path para este diretório: vendor/cakephp/cakephp/, com a barra final
DS - Retorna a barra "/"
ROOT - Retorna /var/www/html/nomeApp
TMP - Retorna /var/www/html/nomeApp/tmp/
VENDORS - Retorna /var/www/html/nomeApp/config/
WWW_ROOT - Retorna /var/www/html/nomeApp/webroot/
TIME_START - Unix timestamp em microsegundoss como um float desde que a aplicação iniciou.
SECOND - 1
MINUTE - 60
HOUR - 3600
DAY
WEEK
MONTH
YEAR - 31536000 (segundos)
Mais detalhes em:
https://book.cakephp.org/3.0/en/core-libraries/global-constants-and-functions.html
Exemplo de uso:
Em um controller, adicione a linha abaixo no action/método index()
dd(TIME_START);
Enviar informações do controller para uma view:
$this->set('valores', $valores);
Enviar informações da view para o controller
Na view search.tcp:
$this->Form->create('Model', array('type' => 'get', 'action' => 'search'));
$this->Form->input('select_tfield_id', array('type' => 'select'));
$this->Form->input('value'));
$this->Form->end('submit');
No controller:
function search() {
$url = $this->params['url'];
$id = $url['select_tfield_id'];
$value = $url['value'];
}
Comments fornecido por CComment