Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Opa, como vão?
Acho que sou o membro que estuda cakephp que mais tá sumido aqui.. -.-
Bom, venho com uma dúvida nada comum... as funções estão corretas... eu debuguei o cookie quando o formulário é submetido e aparece o resultado na tela, mas se eu tentar dar um ENTER na url, ou acessar outra página... o cookie ou fica com valor NULL, ou ficar com valor desfigurado, com aqueles caracteres, parecendo que está criptografado...
Vamos ao código que utilizei, baseado no "remember-me" do AuthComponent:
//app_controller.php
function __get_post_action( $name ) {
$params = func_get_args();
foreach ($params as $name) {
if ( isset($_POST[$name]) ) {
return $name;
}
}
}
function __configSIte() {
switch ( $this->__get_post_action('blue', 'red') ) {
case 'blue':
// criando cookie com valor de cor azul
$this->Cookie->write( 'background', 'blue', null, '+2 weeks' );
break;
case 'red':
// criando cookie com valor de cor vermelha
$this->Cookie->write( 'background', 'red', null, '+2 weeks' );
break;
default:
//no action sent
}
$bg_cookie = $this->Cookie->read('background');
debug( $this->Cookie->read('background') );
//pr( $bg_cookie );
//var_dump( $bg_cookie );
if ( is_null($bg_cookie) ) {
//$bg_cookie = 'red';
//pr($bg_cookie);
}
$this->set( compact( 'domain_url', 'bg_cookie' ) );
}
function beforeFilter() {
$this->__configSIte();
}
Agora o código da view:
//views/users/login.ctp
<div class="backgrounds">
<?php
echo $this->Form->create( $this->params['controller'], array( 'action'=>$this->params['action'] ) );
echo $form->submit( '', array( 'name'=>'blue', 'title'=>__('Azul', true) ) );
echo $form->submit( '', array( 'name'=>'red', 'title'=>__('Vermelho', true) ) );
echo $this->Form->end();
?>
</div>
Agora o código do layout:
// views/layouts/login.ctp:
echo $this->Html->css( array( 'login', 'background_'.$bg_cookie ) );
Preciso que me digam onde eu errei no código, pois isso eu não consigo encontrar nem debugando a página =/
Agradeço essa grande equipe do CakePhp do iMasters.... ^^
Sem contar que tento salvar o login com cookie de 1 ano, mas é só eu fechar o navegador que ele expira -.-'
Ah, descobri um dos motivos..... =/
No caso, eu crio o cookie de login em /controllers/users_controller.php na action login(), se eu tentar lê-lo em /app_controller.php, no before_filter() vai dar null =/
Não é o meu caso, no meu caso eu criei o cookie na app_controller, em beforeFilter() e estou tentando lê-lo no mesmo beforeFilter() da app_controller.php e ele sempre cai no teste que verifica se é null.... =/
Cliquei no botao de background azul e dei um pr($this->Cookie) dentro do case 'blue'
CookieComponent Object
(
[name] => location
[time] => +2 weeks
[__reset] =>