Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

P3rukao

Carregar dados no layout

Recommended Posts

Seguinte,

 

como eu faço para carregar os dados de uma tabela no meu layout??

 

Eu tenho em meu layout, uma área onde tenho que listar as ultimas noticias... e tem de aparecer em todas as páginas... então... devo por isso no layout mesmo, ou há outra maneira de se fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já estou usando um layout... e é justamente essa incorporação que não estou entendendo como fazer....

 

tipo... eu tenho algumas noticias... e quero que exibilas na coluna direita de meu site... em todas as páginas... então creio eu que seja para usar no layout mesmo...

 

mas como que eu vou puxar os dados de algum lugar se eu não setei isso em nenhum controller??

ou eu devo só criar uma variável no meu controller das noticias e utiliza-la no meu layout ??

 

 

Mas eu vou dar uma sacada nesse Elements pra ver se resolve... obrigado por enquanto... ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se em qualquer action de qualquer controller você fizer isto:

function action(){
  $this->set('var' , 'blabla');
}
E em qualquer view/layout/element você fizer isso:

<?php echo $var ?>
Aparecerá o que se espera ;D

Então a solução é setar em AppController no método beforeRender, que é antes da view ser renderizada:

function beforeRender(){
                $this->set('variavel', 'ConteudoDela');
            }

Crie um arquivo em "\app\app_controller.php".

Este arquivo é como se fosse "o filho" dos outros controles, oque você por ai será executado em todos os outros controles, então faça o seguinte:

<?php
	class AppController extends Controller {

            function beforeRender(){
                $this->set('variavel', 'ConteudoDela');
            }
?>

Se der certo diga ;D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas uma correção a ser feita...

 

"Este arquivo é como se fosse "o filho" dos outros controles"

 

App é o PAI de todos os seus controles...

o VÔ dos seus controles é o Controller

 

 

1º
class Controller {
...
}

2º
class AppController extends Controller {
...
}

3º
class xxxController extends AppController {
...
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana... eu olhei o link http://book.cakephp.org/pt/view/97/Elements mas não achei ele muito esclarecedor não... e tbm naum achei muita coisa no google sobre Elements.. (talvez não esteja procurando direito =/)...

mas eu tentei fazer do jeito que tinha pensado no início... só pra desencargo de consciência... e fiz assim:

 

no meu controller de noticias:

$conditions = array('conditions' => array("`Noticia`.ativado"=>1,"`Noticia`.excluido"=>0), 'limit'=>6,'order'=>array('`Noticia`.`id`'=>'desc'));
 $this->set('Not', $this->Noticia->find('all',$conditions));

e no meu layout eu simplesmente puxei os dados dentro de um foreach usando a variavel $Not que acabei de setar... e funcionou direitinho... xD

 

 

 

Agora... eu gostaria de entender melhor esses Elements...

V6 podem me indicar alguns links que expliquem bem o funcionamento dele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Correção:

 

e no meu layout eu simplesmente puxei os dados dentro de um foreach usando a variavel $Not que acabei de setar... e funcionou direitinho... xD

Porém... somente quando eu acesso o endereço referente ao meu controller, nesse caso meusite/noticias/ daí ele faz a listagem dos dados... mas se for em qualquer outra página ele não lista nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dentro de cada view sua terá que ter o código:

 

<?php
//Definição de qual layout usar ele é salvo dentro de app\view\layout\xxxxx.ctp
$this->layout = 'xxxxx';?>

E por sua vez dentro deste layout você poderá indicar qual css usar, fica salvo os css

em app\webroot\css com o seguinte código:

 

echo $html->css('yyyyy');

 

Obs.: Exemplo usados xxxxx e yyyyy não devem ter extensão informada ao ser chamada! (sem .ctp e sem .css)

;D

Espero ter te ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É simples utilizar elementos.

Dentro de "app\view\elements" você deixa todos os seus elements (com extensão .ctp).

Por exemplo, você vai fazer um element chamado banner, que existirá em algumas páginas, então:

 

view\elements\banner.ctp

<img src="<?php // codigo php pra deixar banner randomico ?>" />

Ai no layout "produtos" por exemplo, você quer exibi-lo:

 

view\layouts\produtos.ctp

<?php echo $this->element('banner') ?>

Assim produtos.ctp chamaria banner.ctp =D

Simples =D

Existem outras configs opcionais, como por exemplo, setar uma variavel quando for carregar o elemento. Veja:

 

view\layouts\produtos.ctp

<?php echo $this->element('banner' , array('minhaVar' => 'meuValor')) ?>

Sendo assim, o elemento banner conteria a variavel $minhaVar com o valor "meuValor".

Veja mais em: http://book.cakephp.org/pt/view/97/Elements

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahhhh... então eh como se fosse os velhos includes xD... muito massa http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

eu vi, que na maioria dos casos ele eh usado para conteúdos estáticos

então nesse caso... se eu quiser montar a estrutura do meu layout separando cada trecho do mesmo em Elements teria algum problema??

 

 

Vou ver se consigo trabalhar com ele.. ^^)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vejo problema.

Mas o principal proposito dos elements é o reuso.

Você tem 50 layouts, e todos eles tem em comum um menu, só que em lugares diferentes, oque você acha que será mais viavel, utilizar elements, ou refazer este menu em cada um dos layout? =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.