URL alapú szűrés symfony 1.2 admin generatorral

A probléma

Symfony 1.0 admin generator alatta a lista nézet szűrése nagyon egyszerűen volt megoldva: az űrlapon megadott paraméterek GET-ként közlekedtek, maga a szűrés alkalmazása is a list actionben volt implementálva. Így máshonnan is könnyen használható volt, saját magunk által készített egyedi URLben is. Ez az új admin generator alatt most nem működik. Legalább is egyből nem, de mint látni fogjuk könnyen szóra bírható.

Az ok

A symfony 1.2 admin generator alatt a szűrés sfFormFilter alapú űrlapokkal van megoldva. Ez alapértelmezetten egyedi name formattal érkezik (model_neve_filters[%s]) és még a csrf védelem is be van kapcsolva. Emellett külön action (filter) készült a szűrés alkalmazásához.

A megoldás

Tehát 3 dolgot kell megoldanunk:

  1. a filter actionnel nem tudunk mit kezdeni, a linkeket át kell írni
  2. a csrf védelem kikapcsolása: a konstruktor felül kell írni, a harmadik paraméteren átadott $CSRFSecret paraméter helyett false értékkel kell meghívni a szülőt.
  3. a name format paramétert át kell írni sima filters[%s]re.

Ezt megtehetjük az egyes filter form osztályokra, de alkalmazhatjuk egységesen a szülőben (BaseFormFilterDoctrine) megvalósítva is.

abstract class BaseFormFilterDoctrine extends sfFormFilterDoctrine
{
  public function __construct($defaults = array(), $options = array(), $CSRFSecret = null)
  {
    parent::__construct($defaults, $options, false);
  }

  public function setup()
  {
    $this->widgetSchema->setNameFormat('filters[%s]');
  }
}
Kategória: fejlesztés, symfony, trükkök
Címke: , ,
Közvetlen link a könyvjelzőhöz.

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s