Zend Framework - pass variável para cada controlador

votos
4

Eu estou trabalhando em aplicação multi-tenant no Zend Framework, que fica com o TenantID do nome de subdomínio (mod_rewrite -> index.php -> compara com o banco de dados).

A minha pergunta é - como faço para definir esta variável (id inquilino) para estar disponível para todos os controladores?

Leonti

Publicado 27/11/2009 em 03:45
fonte usuário
Em outras línguas...                            


3 respostas

votos
9

Sim, Zend_Registry pode ser usado para isso. Outra coisa que você pode fazer é registrar um plugin controlador de pré-expedição, que irá adicionar o TenantID como um parâmetro de solicitação antes de qualquer controlador recebe-lo:

class YourApp_Plugin_IdWriter extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        $request->setParam('tenantID', ...);
    }
}

Você precisa registrar o plugin em seu application.ini:

resources.frontController.plugins.access = "YourApp_Plugin_IdWriter"
Respondeu 27/11/2009 em 08:08
fonte usuário

votos
1

Acho Zend_Registry pode ser o caminho a percorrer. http://framework.zend.com/manual/en/zend.registry.html É este é o caminho certo para fazê-lo?

Leonti

Respondeu 27/11/2009 em 05:27
fonte usuário

votos
0

Eu acho que um plugin front controller que apenas define uma variável é muito alto.

A maneira mais simples é criar o controlador de ação de base e herda todos os outros a partir dele.

class MyCompany_Controller_Action extends Zend_Controller_Action
{
    public function preDispatch()
    {
        parent::preDispatch();

        $this->getRequest()->setParam('tenantId', 42);
    }
}

Você tem um outro benefício indireto que todos os controladores herda a partir desta base um, por isso é mais fácil adicionar lógica comum que deve ser usado de todo.

Respondeu 01/12/2009 em 17:50
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more