Symfony: как фильтровать данные на внешнем интерфейсе, как на сервере - PullRequest
3 голосов
/ 22 сентября 2010

в бэкэнде Symfony 1.4 / Doctrine у ​​вас есть инструмент, который позволяет фильтровать данные по дате, местоположению, возрасту (и многим другим в зависимости от вашей модели)

enter image description here

Я ищу способ сделать то же самое (с некоторыми настройками, такими как удаление некоторых полей), но в интерфейсе .Я не нашел никакой документации о том, как это сделать

У вас есть идея?

1 Ответ

5 голосов
/ 22 сентября 2010

Если вы хотите сделать это точно , как это делается на бэкэнде, вы можете использовать генератор администратора в приложениях внешнего интерфейса. Более общим и настраиваемым способом было бы просто создать список и фильтровать действия и использовать фильтры форм Symfony. Вот базовый пример для модельного класса «Артикул»:

В классе действий:

class articleActions extends sfActions
{
  public function executeList(sfWebRequest $request)
  {
    $this->form = new ArticleFormFilter();
    $this->pager = new sfDoctrinePager('Article');
  }

  public function executeFilter(sfWebRequest $request)
  {
    $this->form = new ArticleFormFilter();
    $this->form->bind($request[$this->form->getName()]);
    if ($this->form->isValid())
    {
      $this->pager = new sfDoctrinePager('Article');
      $this->pager->setQuery($this->form->getQuery());
      $this->setTemplate('list');
    }
    //handle invalid form here
  }
}

Видите, итерируйте пейджер броска так:

 foreach($pager->getResults() as $article)

Doctrine FormFilter's довольно похожи на Doctrine формы. Начните с настройки формы внутри FormFilter :: configure ();

...