Olá Spark, Pensei que bastasse não existir view para um action somente de processamento. Setar as variáveis faz sentido.
Não entendi muito bem o RequestAction. é isso ai, decifrando o enigma o resultado final é bem melhor. Valeu Abraço. Benito On 11/12/07, DJ Spark <[EMAIL PROTECTED]> wrote: > > > opas ! > > Sobre a documentação: > A nova versão do manual está em construção, aqui: > http://tempdocs.cakephp.org/ > Ele está muito mais claro, mais detalhado (onde deve), e, obviamente, > cobre os novos features do cake1.2 > > A versão antiga, você já deve saber, está no > http://manual.cakephp.org/ , e a parte específica do layout, em > http://manual.cakephp.org/chapter/views > > Outra paradinha que ajuda: http://www.cakephp.org/files/cakesheet.pdf > > Resumindo, você tem um arquivo de layout que vai envolver o conteúdo > gerado pelas views. Pra começar , você tem o layout default.ctp , que > fica dentro de /views/layouts . Aqui vai ficar o doctype, <html>, > <head> a chamada do css, js, <body> e os elementos que vão dar a cara > mais geral do site, e lá no meio tem a chamada pro conteúdo da view: > http://manual.cakephp.org/chapter/views > Aí, se as coisas complicarem (por exemplo, num site, você pode ter > um layout para a home, e outro para as paginas internas), é só mudar o > layout no controller, > $this->layout = 'outrolayout'; > > Dentro dele, assim como nas views, você usa PHP/HTML normal, e os > helpers do cakephp para gerar seus links (independente do path da sua > aplicação), assim como alguns facilitadores para criar forms, selects, > inputs, labels, etc etc etc > > Nas views, você pode usar os elements para partes do seu código que > se repetem (ou que fiquem melhor separadas da view principal): > <?php echo $this->renderElement('banner/full'); ?> > Esse código vai pegar o que estiver em > "/views/elements/banner/full.ctp" . Para alguma variável para o > elemento, use um array nomeado como parametro: > <?php echo $this->renderElement('banner/full', array('pagina' =>'home')); > ?> > > Uma das coisas mais úteis, e que alivia o cake, em termos de memória, > é usar um requestAction que só retorna um valor (e não cria novas > instâncias da view): > <?php echo $this->renderElement('banner/full', array('pagina' > =>$this->requestAction('/banners/showBanner/home'))); ?> > > E lá no meu BannersController eu teria > function showBanner($pag = null) > { > return $this->Banner->getBannerToShow($pag); > } > > > Outras coisas que fui descobrindo: > - para sua ação renderizar outra view e/ou outro layout: > $this->render('outraview', 'outrolayout'); > > - para que sua view não renderize layout nenhum (quando sua ação é só > de processamento, por exemplo), defina no na sua ação no controller: > $this->autoLayout = false; > $this->autoRender = false; > > - o cakephp tem um esquema de temas, que o usuário poderia modificar, > que não sei usar , mas tem essa variável aqui, em algum lugar > $this->themeWeb > > > espero ter ajudado a decifrar o enigma :) > spark > > > > > On Nov 12, 2007 4:51 AM, Josenivaldo Benito Junior > <[EMAIL PROTECTED]> wrote: > > Só acrescentando que já resolvi esse problema. > > > > Por algum motivo que eu não sei qual é, havia um "allow" no redirect do > meu > > grupo de teste. Então o oth redireciona para tal controller "allow" que > não > > existe. Retirando o allow do redirect agora ele funciona como deveria. > > > > Também testei a situação onde o usuário tenta "re-logar" sem ter feito > > logout. O othAuth trata essa situação, de qualquer forma vou fazer com > que o > > users/login teste se o usuário já está logado e retorne ele ao sistema > após > > uma mensagem "você já está logado" ou coisa tipo. Isso garante qualquer > > eventual furo. > > > > Obrigado a todos que deram as dicas. Assim que colocar o site no ar eu > posto > > a URL para vocês darem uma olhada... e claro, criticar à vontade. > > > > Em tempo, um comentário. Eu já disse que meu negócio não é layout, não > tenho > > o mínimo de dom artistico necessário (na realidade tenho urticária > quando > > penso em layout hihihi). Mas estava curioso e procurando documentação do > > Cake sobre seu esquema de layout. Fiquei impressionado como não achei > nada > > de concreto. A documentação do cake é super vaga quando fala de layouts > e > > sim, abri o código e vasculhei, vi que não é complicado de comprender, > mas > > uma documentaçãozinha seria bem legal. Recentemente fiz uma doação ao > time > > do Cake, acredito que devemos suportar aquilo que nos ajuda, acho que > quando > > tiver propriedade sobre assunto vou ajudar documentando alguma coisa. > > > > Valeu outra vez galera. > > > > Abraço, > > Benito > > > > > > On 11/9/07, Josenivaldo Benito Junior <[EMAIL PROTECTED] > wrote: > > > > > Obrigado Bill. > > > > > > O mesmo está funcionando, apenas estou enfretando um probleminha que > ainda > > estou debugando sem muito sucesso. > > > > > > Seu eu tento fazer algo protegido ele me direciona para a página de > login > > (ótimo!). Tudo ocorre bem agora. Mas, se eu sou um usuário esperto e > savei a > > URL: localhost/app/users/login e uso ela para entrar no site (ou seja, > não > > sou redirecionado para o login, vou direto a ele como primeira atividade > do > > site), após o login o "auto redirect" me joga para > > > > > > localhost/app/allow > > > > > > que obviamente não é um controller válido. Me parece que allow é lixo > > dentro da variável "from" que não está setada. Mas já estou correndo > atrás > > para descobrir onde se origina o problema. Assim que souber eu posto > aqui. > > > > > > Abraço > > > Benito > > > > > > > > > > > > On 11/9/07, Bill < [EMAIL PROTECTED]> wrote: > > > > > > > > > > > > Vamos a algumas dicas do padeiro aqui..rsrsrsrs > > > > > > > > no arquivo app_controller.php, dentro da função beforeFilter, insira > > esta linha > > > > > > > > $this->othAuthRestrictions[] = Configure::read(' > Routing.admin'); > > > > > > > > Ficando desta maneira > > > > > > > > function beforeFilter() > > > > { > > > > > > > > $this->othAuthRestrictions[] = Configure::read(' > Routing.admin'); > > > > > > > > > > > > Agora, no component oth_auth.php, troque todas referências: > > > > > > > > defined('CAKE_ADMIN') > > > > > > > > Por: > > > > > > > > Configure::read('Routing.admin') > > > > > > > > > > > > e todas ocorrencias de: > > > > > > > > CAKE_ADMIN > > > > > > > > Por: > > > > Configure::read('Routing.admin') > > > > > > > > > > > > e tb troque neste arquivo a linha: > > > > $res = > $UserModel->save($row,true,array($this->user_table_last_visit)); > > > > > > > > > > > > Por estas 2 linhas: > > > > $UserModel->id = $row[$this->user_model]['id']; $res = > > > $UserModel->saveField($this->user_table_last_visit,$row[$this->user_model][$this->user_table_last_visit],true); > > > > > > > > > > > > Estas dicas foram extraidas deste blog: > > > > http://www.ancientwisdom.cc/news/archives/111 > > > > > > > > Espero q te ajude > > > > > > > > > > > > > Boa noite Bill, Gustavo e lista, > > > > > > > > > > Bill, funcionou, agora ele não tenta mais criar um registro novo > na > > > > > tabela de usuários e atualiza os dados de last visit e modified > > > > > corretamente. Porém continua o notice: > > > > > > > > > > Notice: Only variables should be assigned by reference in > > > > > C:\xampp\htdocs\logbook\app\controllers\components\oth_auth.php on > > > > > line 301 > > > > > > > > > > Obviamente seguido de um "Cannot modify headers" já que isso > > > > > acontece em um redirecionamento. > > > > > > > > > > Algum outro ajuste no oth_auth.php? > > > > > > > > > > Grato. > > > > > Benito > > > > > > > > > > On 11/8/07, Bill wrote:> Bom, vamos lá, > > > > > > > > > instalei aqui o othAuth e funcionou perfeito, mas tem alguns > > > > > ajustes necessários, primeiro, vamos tratar deste erro: > > > > > > > > > >> + ou - na linha 323 do component oth_auth.php, temos o seguinte > > > > >> trecho de código: > > > > >> > > > > >> // Update the last visit date to now > > > > >> if(isset($this->user_table_last_visit)) { > > > > >> $row[$this->user_model][$this- > > > > >> >user_table_last_visit] = date('Y-m-d H:i:s'); > > > > >> $res = $UserModel->save($row,true,array($this- > > > > >> >user_table_last_visit)); } Substitua por isto: > > > > >> // Update the last visit date to now > > > > >> if(isset($this->user_table_last_visit)) { > > > > >> $row[$this->user_model][$this- > > > > >> >user_table_last_visit] = date('Y-m-d H:i:s'); > > > > >> $UserModel->id = $row[$this->user_model]['id']; > > > > >> $res = $UserModel->saveField($this- > > > > >> >user_table_last_visit,$row[$this->user_model][$this- > > > > >> >user_table_last_visit],true); } > > > > >> > > > > >> > > > > >> Na linha ($res = $UserModel->saveField($this- > > > > >> >user_table_last_visit,$row[$this->user_model][$this- > > > > >> >user_table_last_visit],true); ) eu troquei o $UserModel->save > > > > >> por $UserModel->saveField, que atualiza o registro, atualizando > > > > >> assim a data de autenticação do usuário, quando o save, apenas > > > > >> está tentando isnerir um novo registro, por isto dá erro > > > > >> > > > > >> > > > > >> Ah, acessa a tabela de usuários do othAuth e deleta um registro > > > > >> em branco q tem lá, ele foi criado por este save besta ai de > > > > >> cima..rs > > > > >> > > > > >> Qquer coisa so perguntar > > > > >> > > > > >> > > > > >>> Bom dia, > > > > >>> > > > > >>> Não falei que iria começar a fazer perguntas? Seguindo a > > > > >>> documentação do othAuth consegui por para funcionar (ainda tem > > > > >>> bugs) mas estou tendo dois problemas: > > > > >>> > > > > >>> 1) Recebo a mensagem: Notice: Only variables should be assigned > > > > >>> by reference in > > > > >>> C:\xampp\htdocs\logbook\app\controllers\components\oth_auth.php > > > > >>> on line 301 logo depois de logar com usuário correto. A linha > > > > >>> 301 está, se não me engano, fazendo o save do LoginAttempt > > > > >>> model. Como dá esse Notice, não grava o login attempt e, > > > > >>> obviamente, não faz o redirect corretamente. > > > > >>> > > > > >>> 2) Se apago o cookie de sessão (para forçar um login), recebo, > > > > >>> além do item um acima, um > > > > >>> > > > > >>> > > > > >>> Query: INSERT INTO `users` (`last_visit`,`created`,`modified`) > > > > >>> VALUES ('2007-11-08 02:05:27','2007-11-08 02:05:27','2007-11-08 > > > > >>> 02:05:27') > > > > >>> Warning: SQL Error: 1062: Duplicate entry '' for key 2 in > > > > >>> > C:\xampp\htdocs\cake_core\cake\libs\model\datasources\dbo_source.php > > o > > > > >>> n line 440 que, neste caso, está tentando dar INSERT de > > > > >>> valores na tabela users para uma key 2. O detalhe é que só > > > > >>> tenho um usuário na tabela users e ele tem key (Id) 1. Os > > > > >>> campos create e modified e last_visit do user (id=1) não são > > > > >>> mexidos, mas a entrada 2 é criada (caso não exista) e depois > > > > >>> recebo esse erro. Pergunta, o othAuth não deveria tentar um > > > > >>> "UPDATE" ao invés de INSERT? Alguém sabe o que está causando > > > > >>> isso? Grato Benito > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > [livesets] http://djspark.com.br/ > [web] http://sydi.net > [filmes] http://melhoresfilmes.com.br > > > > --~--~---------~--~----~------------~-------~--~----~ Recebeu esta mensagem porque está inscrito em Grupo "Cake PHP Português" do Grupos Google. Para enviar mensagens para este grupo, envie um email para [email protected] Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED] Para mais opções, visite este grupo em http://groups.google.com/group/cake-php-pt?hl=pt-PT -~----------~----~----~----~------~----~------~--~---
