2011-01-13 12 views
0

Ich habe eine Reihe von Modulen, die auf generator.yml laufen. In einigen davon möchte ich standardmäßig die Einträge "Status: GESCHLOSSEN" (als letzte einer Reihe von Status) ausblenden. Natürlich, wenn der Benutzer nach CLOSED filtert, möchte ich diese Datensätze anzeigen.So wenden Sie die Abfrage auf das Modell an, wenn das Feld nicht gefiltert ist

Ich dachte, es wäre sinnvoll, andWhere ('status_id =?', Status :: CLOSED) in einer bestimmten table_method anzuwenden, aber wie greife ich auf die Filter des Moduls aus dem Modell?

Gibt es einen besseren Weg, dies zu tun?

Antwort

0

Ich denke, man kann Erstelle ein neues Feld zB 'ShowClosedStatus' (können benötigen Sie das Widget und Validator in Form hinzuzufügen) fügen Sie dann getFilterDefaults() in der generatorconfiguration mit

public function getFilterDefaults() {
return array ('showClosedStatus' => 'falsch');
}

fügen Sie dann die Funktion addShowClosedStatusColumnQuery (Doctrine_Query $ q, $ Feld, $ value) {
if ($ value == false) {
$ q-> UndWo ('status! = Geschlossen'
) }

+0

Ich werde dies als Workaround verwenden - es funktioniert nur, wenn der Standard ist wahr, sonst addShowClosedStatusCOlumnQuery nicht erreicht. Ich würde es vorziehen mit einem einzigen Feld zu arbeiten, aber das ist gut genug für jetzt – jdog

0

Ich bin nicht 100% sicher, was Sie tun möchten? Ist es Standard den Zustand eines der Filter?

Wenn ja, das ist ziemlich einfach. apps // Module // lib/GeneratorConfiguration.php eine Methode zur Klasse hinzufügen, genannt „getFilterDefaults“:

class modulenameGeneratorConfiguration extends BaseModulenameGeneratorConfiguration 
{ 
    public function getFilterDefaults() { 
    return array('status' => 'something'); 
    } 

} 

Der einzige Unterschied für Sie, dass es klingt wie Sie in auf einem Array von Werten für das Feld filtern Frage. Hatte nie einen Grund, dies zu versuchen, aber ich würde mir vorstellen, eine Reihe von Werten anstelle von etwas zurückzugeben, wäre der Weg, dies zu tun.

+0

Nein, ich brauche die Abfrage anwenden! = an den Filter geschlossen, es sei denn, der gewählte Filter = CLOSED – jdog

0

Alternative Antwort, basierend auf dem Kommentar von OP.

Wenn Sie anpassen möchten, wie die Abfrage für ein bestimmtes Feld aufgebaut ist, finden die entsprechende Filterform in lib/Filter/Lehre und ein Verfahren wie dieses, um es hinzuzufügen:

public function addStatusColumnQuery(Doctrine_Query $q, $field, $value) { 
    // do whatever you want here - ie: check $value, and add the query conditions you need to $q. 

    return $q; 
} 
+0

sehr nahe sieht, was ich will, Problem ist, diese Funktion nicht aufgerufen wird, wenn kein Filter ausgewählt - Ich muss aber trotzdem filtern. Irgendeine Dokumentation des Flusses, den ich mir anschauen könnte? – jdog

+0

Ich fand auch diese http://www.symfony-project.org/tutorial/1_4/en/whats-new#chapter_a2fae23c9403b0e9ec99806fccf6b53e_sub_sfformfilterdoctrine aber unklar, wo der Filter Samen zu setzen. Änderungen in table_method lassen mich mit dem gleichen Problem – jdog

Verwandte Themen