Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, estou iniciando agora com o ZendFramework e logo de inicio surgiram algumas dúvidas. Vamos lá:
1 - Antes de usar o ZendFramework eu sempre utilizei uma pasta para o Site e outra (ADMIN) para o Sistema. Mesmo que o cliente não exija que o Sistema tenha um frontend (site) eu deixava essa pasta lá para que posteriormente possamos implementar esse frontend caso haja necessidade. No ZendFramework percebi que há como habilitar o layout através do zf enable layout, porém eu quero que haja layouts totalmente diferentes (css, js, imagens) para o ADMIn e para o SITE. Lendo a respeito achei um site que para fazermos um módulo DEFAULT (frontend) e outro módulo ADMIN (painel / sistema ).
O que vocês acham dessa divisão em DEFAULT e ADMIN ? Como separar os layouts de ambos ?
Como estou iniciando agora, acho bom começar do ZF1 pois o mesmo possui um tutorial completo e um maior suporte pelo tempo que já está no ar.
De qualquer forma, o ZF1 é ultrapassado.
O ZF2 já possui documentação e quickstart.
http://framework.zend.com/manual/2.1/en/index.html
http://framework.zend.com/manual/2.0/en/user-guide/overview.html
Falta de material sobre o ZF2 não é uma "desculpa" para usar o ZF1. Tem muita, mas muita coisa pela internet sobre ele.
-----
Essa forma de modularidade era feita toda hora, mas não é uma real modularidade, veja o ZF2, o conceito de modularidade é diferente e muito bem feito.
O problema é que na minha empresa eles exigem o ZF1, então não tenho como fugir disso.
A documentação fornece essa informação: http://framework.zend.com/manual/1.12/en/zend.controller.modular.html
Ela mostra como você usa controllers/models/views separados para cada módulo.
problema que ele não mostra como separar os layouts. E o exemplo ainda está erro no site que você me passou isso porque o zendtool cria /application/module/meumodulo e no exemplo ele faz /application/meumodulo
Compreendi, sobre o layout, basta você criar um plugin, como você pode ver aqui: http://stackoverflow.com/a/2649821
A organização de pastas é apenas uma configuração.
Será que você poderia me explicar como utilizar isso ?
Bem, em sua classe bootstrap você iria inserir aquele método.
Em sua pasta library, você iria criar uma pasta com o nome da app e uma outra pasta dentro chamada Plugin e um arquivo chamado Module, ficando mais ou menos assim:
library/
MyApp/
Plugin/
Module.php
Nesse arquivo, você teria um plugin, que faria o trabalho de manipular os layouts, o código do plugin seria aquela classe.
Na sua pasta de layouts, você teria um arquivo com o nome do módulo, com a extensão .phtml, caso contrário ele tentaria usar o arquivo default.phtml, que estaria também em sua pasta de layouts.
Comumente a pasta de layouts é a application/layouts/
Entendi, no meu caso eu teria os seguintes modulos: default (site), admin (painel administrativo), financeiro (modulo financeiro), pessoal (modulo de gestão de pessoal).
Neste caso o modulo default teria um layout e os outros modulos admin, financeiro e pessoal possuem o mesmo layout.
Então eu faria um default.phtml, admin.phtml (para layouts), mas quando o modulo financeiro for acessado eu quero que ele use o layout do painel e não do default.phtml.
Basta apenas um pouquinho de criatividade e codificação:
<?php
class MyApp_Plugin_Module extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$module = $request->getModuleName();
$layout = Zend_Layout::getMvcInstance();
switch ($module) {
case 'admin':
case 'financeiro':
$layout->setLayout('admin');
break;
default:
$layout->setLayout('default');
break;
}
}
}
:graduated:OBrigado, vou testar mas desde já agradeço :D
Sendo sincero, esquece o ZF1.. ele está ultrapassado.
O ZF2 está há muito tempo estável e introduz uma real modularidade.