пользовательский пейджер / formfilter / buildquery не обрабатывает данные фильтра в запросе - PullRequest
0 голосов
/ 25 мая 2011

У меня есть действие, требующее использования formfilter, пейджера и определенного метода таблицы:

$this->filterForm = new OrganisationFormFilter();
$this->filterForm->setTableMethod('retrieveMemberOrganisations');
$this->filterForm->bind($searchParams);
$v = $this->filterForm->getValues();
$q = $this->filterForm->buildQuery($v);

$this->pager = new sfDoctrinePager('Organisation', 50);
$this->pager->setQuery($q->orderBy(implode(' ',$this->getSort())));
$this->pager->setPage($request->getParameter('page',1));
$this->pager->init();

public function retrieveMemberOrganisations(Doctrine_Query $q){

    $rootAlias = $q->getRootAlias();
    $q->
    select("$rootAlias.*")->
    addSelect('m.id, sc.id, cat.id, cat.number_key')->
    innerJoin ("$rootAlias.CurrentMember c")->
    innerJoin ("$rootAlias.Membership m")->
    innerJoin ('m.LatestMembership lm')->
    innerJoin ('m.MembershipSubcategory sc')->
    innerJoin ('sc.MembershipCategory cat');

    return $q;

}

Проблема в том, что настройки фильтра вообще не обрабатываются. Я проверил, что значения в $ v установлены, но, похоже, они не отражаются в $ q. Также, когда я останавливаюсь на входе отладчика для извлеченияMemberOrganisations, $ q также не противоречит настройкам фильтра. Это правильный порядок кода, который я использую?

1 Ответ

1 голос
/ 26 мая 2011

Я на самом деле использую formFilter, чтобы сделать что-то подобное. Вместо использования

$q = $this->filterForm->buildQuery($v);

использование

$q = $this->filterForm->getQuery();

Я не использую метод setTableMethod , но думаю, что он должен работать.

...