Ir para conteúdo

POWERED BY:

Arquivado

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

Scientist

Módulos Frontend e Backend com ZendFramework

Recommended Posts

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 ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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/

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

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.