Hejka,
mam problem i nie bardzo wiem jak go rozwiązać.
Stworzyłem partialsa do wyświetlania własnego filtra w adminie:
  1. <?php
  2. use_helper('Object');
  3.  
  4. $c = new Criteria();
  5. $c->addAscendingOrderByColumn(AuthorsPeer::SURNAME);
  6. $c->addAscendingOrderByColumn(AuthorsPeer::NAME);
  7.  
  8. echo select_tag('filters[author]', '<option value=""></option>'.objects_for_select(
  9. AuthorsPeer::doSelect($c),
  10. 'getId',
  11. '__toString',
  12. isset($filters['author']) ? $filters['author'] : '0'
  13. )); ?>


W /apps/backend/modules/articles/actions/actions.class.php zmodyfikowałem metodę addFiltersCriteria():
  1. <?php
  2. protected function addFiltersCriteria (&$c) {
  3. //parent::addFiltersCriteria($c);
  4.  
  5. if (isset($this->filters['author']) && $this->filters['author'] != '') {
  6. $c->add(AuthorsPeer::ID, $this->filters['author']);
  7. $c->addJoin(AuthorsPeer::ID, ArticlesAuthorsPeer::AUTHOR_ID);
  8. $c->addJoin(ArticlesAuthorsPeer::ARTICLE_ID, ArticlesPeer::ID);
  9. }
  10. }
  11. ?>


Początkowo nie było linii z parent:: i wtedy podczas filtrowania brane były pod uwage tylko wartości autorów. Pozostałe pola filtrów (tytuł, data utworzenia) były ignorowane przy tworzeniu zapytania. Więc postanowaiłem wywołać najpierw parent::addFiltersCriteria() aby najpierw użyć domyślnych filtrów, a później mogego. W rezultacie dostaję błąd:
  1. Undefined class constant 'AUTHOR' in /home/phpion/public_html/symfony/cache/backend/dev/modules/autoArticles/actions/actions.class.php on line 388


i w tym pliku znajduję:
  1. <?php
  2. ...
  3. else if (isset($this->filters['author']) && $this->filters['author'] !== '')
  4. {
  5. $c->add(ArticlesPeer::AUTHOR, $this->filters['author']);
  6. }
  7. ?>


W tabeli artykułów nie ma pola autor stąd ten błąd. Tylko dlaczego moje 3-linijkowe kryteria zastępowane są tym 1-linijkowym i na dodatek błędnym...?
Proszę o pomoc...