Joomla-Filter funktioniert nach Klick auf jGrid-Button nicht mehr

  • Hallo zusammen,


    ich habe im Backend meiner Komponente bei einem Test einen Fehler gefunden, den ich mir derzeit nicht erklären kann:


    Ich habe eine ganz normale Liste mit Items, welche aus der getListQuery-Methode des Models gewonnen wird. Zudem habe ich einige Filter eingebunden, welche allerdings nach dem Klick auf den jGrid-Button nicht mehr aktiv sind.



    Der Filter für die Kategorie wird folgendermaßen erstellt:


    Code
    <field  name        =       "category_id"        type        =       "category"        label       =       "JOPTION_FILTER_CATEGORY"        extension   =       "com_bestia.items"        description =       "JOPTION_FILTER_CATEGORY_DESC"        onchange    =       "this.form.submit();" >            <option value   =   "">JOPTION_SELECT_CATEGORY</option></field>


    In der view.html.php lade ich die Filter folgendermaßen:


    Code
    $this->filterForm   =   $this->get('FilterForm');    $this->activeFilters=   $this->get('ActiveFilters');


    Diese werden dann im Layout gerendert:


    Code
    echo JLayoutHelper::render('joomla.searchtools.default', array('view' => $this));


    Der Konstruktor des Models sieht folgendermaßen aus:


    Code
    public function __construct($config = array()) {    if (empty($config['filter_fields'])) {        $config['filter_fields']    =   array(                                                'id', 'a.id',                                                'title', 'a.title',                                                 'catid', 'nc.catid', 'category_title',                                                                                          'state', 'a.state',                                                'created_by', 'a.created_by'                                                );    }    parent::__construct($config);}


    Und auch in die populateState()-Methode sollte passen:


    Code
    /** * populateState function. *  * @access protected * @param mixed $ordering (default: null) * @param mixed $direction (default: null) * @return void */protected function populateState($ordering = null, $direction = null) {    // Initialise variables.    $app        =   JFactory::getApplication('administrator');    // Load the filter state.    $search     =   $app->getUserStateFromRequest($this->context . '.filter.search', 'filter_search');    $this->setState('filter.search', $search);    $published  =   $app->getUserStateFromRequest($this->context . '.filter.state', 'filter_published', '', 'string');    $this->setState('filter.state', $published);    $categoryId = $this->getUserStateFromRequest($this->context . '.filter.catid', 'filter_category_id', '');    $this->setState('filter.catid', $categoryId);                            // Load the parameters.    $params     =   JComponentHelper::getParams('com_bestia');    $this->setState('params', $params);    // List state information.    parent::populateState('a.id', 'asc');}


    In der getListQuery hole ich mir den Filter wie folgt:


    Code
    // Filter by category.    $categoryId     =       $this->getState('filter.catid');


    Den Button, der den Fehler hervorruft, binde ich folgendermaßen ein (ist selbst definiert, da ich neben "veröffentlicht" etc. noch einen weiteren Status implementieren musste):


    PHP
    <td class="small">        <?php echo JHtml::_('jgrid.published', $item->state, $i, 'items.', $canChange, 'cb'); ?>    </td>


    Soweit, so gut. Der Filter funktioniert so lange, bis ich den Button anklicke. Interessant ist aber auch, dass das Filter-Feld selbst nach dem Anklicken blau markiert bleibt, als ob der Filter aktiv sei - dennoch zeigt die Liste alle möglichen Ergebnisse aus verschiedenen Kategorien an.


    Ich habe


    Code
    $categoryId = $this->getState('filter.catid');


    einmal mit var_dump ausgegeben - sobald ich den Button anklicke ist $categoryId "null". Aber warum?