Ir para conteúdo

POWERED BY:

Arquivado

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

Augusto Rocha

Zend Layout

Recommended Posts

Olá, é o seguinte, estou fazendo uma aplicação que preciso de um layout, ok, criei o layout com o zend layout e esta tudo lindo.

 

Até agora está assim:

 

<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<?php
		echo $this->headTitle();
		echo $this->headLink();
		echo $this->headScript();
	?>
</head>
<body>
	<div id="all">
		<div id="header">
			<div id="logo">
				LOGOTIPO QUE SERÁ ESTÁTICO
			</div>
			<div id="nav-top">
				<div id="nav">
					MENU QUE SERÁ DINAMIDO, PRECISAREI DO ID DO USUÁRIO AUTENTICADO AQUI
				</div>
				<div id="busca">
					BUSCA QUE SERÁ ESTÁTICA
				</div>
			</div>
		</div>
		<div id="sidebar-left">
			<div id="foto-perfil">
				FOTO QUE SERA TRAZIDA PELO BD
			</div>
			<div id="nome-perfil">
				NOME QUE SERA TRAZIDO PELO BD
			</div>
		</div>
		<div id="content">
			<?php echo $this->layout()->content ?>
		</div>
		<div id="sidebar-right">
			OUTRAS COISAS QUE SERÃO TRAZIDAS PELO BD
		</div>
		<div id="footer">
			MENU QUE SERÁ ESTÁTICO
		</div>
	</div>
</body>
</html>

 

Como da para ver eu preciso trazer informações do banco de dados em certas áreas do layout, para que eu não precise reescrever o layout em cada view.

 

Tem como fazer isso sem é claro instanciar o model direto na view e trazer os dados por um foreach e etc? //acho essa opção escrota, pois view vai html e não instancia de objeto.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se isso te ajuda, foi o jeito que eu fiz aqui.

E necessário criar quatro tabelas (menu, submenu, permisão e usuario).

Todas com "permissao_id"

 

As páginas é abertas dentro de um iframe.

 

#Pego o nome do usuario atraves da Zend_auth

public function indexAction()
   {
//Pega o login do usuario
$usuario = Zend_Auth::getInstance()->getIdentity();

//views
$this->view->usuario = $usuario;

//pega o numero do id com a permissão
$id_permissao = $usuario->permissao_id;


//pega mone dos menus com permissao
$sql = new Application_Model_Menu();
$menu = $sql->listarMenu($id_permissao);

//Views
$this->view->menu = $menu;


//pega mone dos submenus com permissao
$sql = new Application_Model_Submenu();
$submenu = $sql->listarSubMenu($id_permissao);

//Views
$this->view->submenu = $submenu;
}

 

Menu dinamico na Views

<ul class="MenuBarHorizontal"> 
<?php 
$permissao = $this->usuario->permissao_id;
$nomes = $this->menu;
foreach ($nomes as $indice => $valor) 
{?>
   <li id="menu"> <a href="#" class="menu"> <?php echo $valor['menu'];?></a>

<ul>
<?php	
//se conferir com a permissao continua
if ($valor['permissao_id'] >= $permissao)
{
   $num = 0;
   foreach ($this->submenu as $indice => $submenu){	
if ($valor['idmenu'] == $submenu['idmenu']){?>		
    <li id="submenu"><a href="#" class="submenu"><?php echo $submenu['nome'];?></a></li>
<?php			
	}
	$num = $num+1;
} //fecha foreach submenu
} //Fecha if 
?>
</ul>
   </li>
<?php 
} //Fecha foreach menu ?> 

</ul>

 

#Model do menu

public function listarMenu($id = null)
{
	try {
		//Valor 1 para pegar todos
		$where = '1';

		if (!empty($id))
		//pega rows com id menor que o $id
		$where = $this->getAdapter()->quoteInto('permissao_id >= ?', $id);		
		return $this->fetchAll($where,array('order' => 'ordem'))->toArray();			
	} catch (Zend_Db_Exception $e) {
		echo $e->getMessage();
	}	
}

 

#Model do Submenu

public function listarSubMenu($id = null)
{
	try {
		//Valor 1 para pegar todos
		$where = '1';

		if (!empty($id))
		//pega rows com id menor que o $id
		$where = $this->getAdapter()->quoteInto('permissao_id >= ?', $id);		
		return $this->fetchAll($where,array('order' => 'ordem'))->toArray();			
	} catch (Zend_Db_Exception $e) {
		echo $e->getMessage();
	}	
}

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.