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