0

アイテム リストのページと、検索に役立つフィルタリング エリアがあります。フィルター フォームから変数を渡して取得するには、getUserStateFromRequest を使用し、これらに従って項目を一覧表示します。しかし、行間または他のビュー間を移動すると、戻ってきて、リスト全体を表示するために変数をリセットしたいのですが、そうではありません。ビューが変更されたときにそれらをリセットする必要があると思います。これまたは他の提案を制御する方法は?

4

3 に答える 3

2

getUserStateFromRequestをまったく使用したくない場合もあります。getUserStateFromRequest は、リクエスト変数をユーザー セッションに保存します。ページを離れるときに状態をリセットしたい場合は、ユーザー セッションで変数を保存しないことを選択できます。

モデル populateState 内では、次のようになります。

$app = JFactory::getApplication();
$search_term = $app->input->get('search_term', null, 'CMD');
$this->setState('filter.search_term', $search_term);

次に、状態を取得します (まだモデル内にあります):

$search_term = $this->getState('filter.search_term');
if($search_term != null)
    $query->where('my_field = ' . $db->quote($search_term));

コードはテストされていないことに注意してください。

于 2012-08-20T14:11:06.220 に答える
0

次のようにアクティブなフィルターをリセットしてから、クエリに resetuserstate=1 を追加できます。


protected function populateState($ordering = null, $direction = null) {

    ... ... ...

    parent::populateState('a.title', 'asc');

    $activefilters=$this->getActiveFilters();
    $jinput = JFactory::getApplication()->input;
    $resetUserState=(bool) $jinput->get("resetuserstate",0, 'INT');        

    if ($resetUserState) {
        foreach ($activefilters as $activefilter => $filterstate) {
            // clearing filters
            $app->setUserState($this->contect . 'filter.'. $activefilter, '');
            $this->setState('filter.'.$activefilter,'');

        }
    } 
}

注: フィルターを誤って設定してユーザー状態を混乱させると、気紛れなことが起こります。ログインおよびログアウトすると、ユーザー状態がクリアされ、役立つ場合があります。

于 2014-10-05T08:45:58.533 に答える
-4

私はまだ私の問題を解決できませんでした:S. ゲットは駄目です。そして、これらのコードの違いは何ですか

            $mainframe  =& JFactory::getApplication();

    $filter_carryingW   = $mainframe->input->get( 'filter_carryingW', '', 'int' );
    $filter_carryingF   = $mainframe->input->get( 'filter_carryingF', '', 'int' );
    $filter_services    = $mainframe->input->get( 'filter_services', '', 'int' );
    $filter_country     = $mainframe->input->get( 'filter_country', '', 'word' );
    $filter_city        = $mainframe->input->get( 'filter_city', '', 'int' );
    $filter_town        = $mainframe->input->get( 'filter_town', '', 'int' );

    $this->setState('com_dratransport.members.filter_carryingW' , $filter_carryingW);
    $this->setState('com_dratransport.members.filter_carryingF' , $filter_carryingF);
    $this->setState('com_dratransport.members.filter_services'  , $filter_services);
    $this->setState('com_dratransport.members.filter_country'       , $filter_country);
    $this->setState('com_dratransport.members.filter_city'      , $filter_city);
    $this->setState('com_dratransport.members.filter_town'      , $filter_town);

    $f['filter_carryingW']  = $this->getState('com_dratransport.members.filter_carryingW');
    $f['filter_carryingF']  = $this->getState('com_dratransport.members.filter_carryingF');
    $f['filter_services']   = $this->getState('com_dratransport.members.filter_services');
    $f['filter_country']    = $this->getState('com_dratransport.members.filter_country');
    $f['filter_city']       = $this->getState('com_dratransport.members.filter_city');
    $f['filter_town']       = $this->getState('com_dratransport.members.filter_town');

            $f['filter_carryingW']  = $mainframe->input->get( 'filter_carryingW', '', 'int' );
    $f['filter_carryingF']  = $mainframe->input->get( 'filter_carryingF', '', 'int' );
    $f['filter_services']   = $mainframe->input->get( 'filter_services', '', 'int' );
    $f['filter_country']    = $mainframe->input->get( 'filter_country', '', 'word' );
    $f['filter_city']       = $mainframe->input->get( 'filter_city', '', 'int' );
    $f['filter_town']       = $mainframe->input->get( 'filter_town', '', 'int' );
于 2012-08-22T19:18:22.753 に答える