eigenen Symfony (1.4) formFilter erstellen

      Kommentare deaktiviert für eigenen Symfony (1.4) formFilter erstellen

Der Admin Generator von Symfony ist schon toll, wenn man Daten schnell anzeigen und bearbeiten möchten. Manchmal stößt man allerdings an die Grenzen der Automatisierung, z.B. wenn man alle aktuell gültigen Artikel (in einem eigenen FormFilter) angezeigt haben möchte. Man kann zwar die Ansicht einschränken mit einem „von“ und „bis“ Datum, aber es geht auch einfacher.
In der betreffenden *FromFilter.class.php setzt man ein Widget (in die Methode configure()).

[sourcecode language=“php“]$formFilterCheckbox = new sfWidgetFormInputCheckbox();
$this->setWidget(‚aktiv‘, $formFilterCheckbox);[/sourcecode]

Dann muss man nur noch eine Funktion mit der Syntax add*Widgetname*ColumnQuery einfügen.
Diese bekommt die Grund SQL übergeben, (es können ja auch mehrere Filteroptionen ausgewählt worden sein) das betreffende Feld und natürlich den Wert.
Sicherlich ist es sinnvoll, den Query in der ArticlesTable zu kapseln, aber für das Beispiel genügt das, denk ich.

<?php 
/**
* Adds the possibility to filter only active articles
* @param string $query
* @param string $field
* @param boolean $value
* @return type string
*/
public function addAktivColumnQuery($query, $field, $value)
{
    if($value == 1)
    {
        ArticleTable::getInstance();
        $query = $query->from('Article a')
                       ->where('valid_till >= ?', date('Y-m-d 00:00:00'));
    }
    return $query;
}