2012-10-21 11 views
5

Ich habe einen benutzerdefinierten Filter tun einige Sachen.In Symfony: Wie Modul aus Filter-Kette auszuschließen

Und ich möchte, dass bestimmte Module nicht in der Filterkette enthalten sind. Mit anderen Worten, für dieses Modul möchte ich, dass mein benutzerdefinierter Filter nicht auf diesem Modul ausgeführt wird und für andere Module ausgeführt wird.

Antwort

3

ich verwenden, um benutzerdefinierte Filter zu und in diesem Filter können Sie den aktuellen Modul abrufen:

<?php 

class customFilter extends sfFilter 
{ 
    public function execute ($filterChain) 
    { 
    $context = $this->getContext(); 

    if ('moduleName' == $context->getModuleName()) 
    { 
     // jump to the next filter 
     return $filterChain->execute(); 
    } 

    // other stuff 
    } 
} 
Ansonsten

, können Sie auch den ausgeschlossenen Modul innerhalb der filters.yml Datei geben:

customFilter: 
    class: customFilter 
    param: 
    module_excluded: moduleName 

Und innen die Klasse:

<?php 

class customFilter extends sfFilter 
{ 
    public function execute ($filterChain) 
    { 
    $context = $this->getContext(); 

    if ($this->getParameter('module_excluded') == $context->getModuleName()) 
    { 
     // jump to the next filter 
     return $filterChain->execute(); 
    } 

    // other stuff 
    } 
} 
+2

Großartig, das funktioniert für mich, aber es gibt ein paar Änderungen, um dies zu machen de Arbeit ---> innerhalb filters.yml ---> es ist "param:" nicht "params:" –

+0

Sie haben Recht, ich reparierte es. – j0k