Yiiでチェックボックスとドロップダウンの組み合わせとして検索結果をフィルタリングする方法は? データベースからリストされているドロップダウンとしてチェックボックスと予算としていくつかのカテゴリがあります。複数のチェックボックスをオンにしてドロップダウンから値を選択すると、検索結果を除外するにはどうすればよいですか..もっと良い方法はありますか?? (私の要件はこのリンクのようなものです。http://www.ebay.in/sch/i.html?_from=R40&_sacat=0&_nkw=pendrives&rt=nc&LH_FS=1 )
質問する
5269 次
2 に答える
1
検索モデルを使用することをお勧めします。これは次のようになります。
class SearchProducts extends CFormModel
{
public $minPrice;
public $maxPrice;
public $categories;
// Add a public property for each search form element here
public function rules()
{
return array(
// You should validate your search parameters here
array('minPrice,maxPrice,categories', 'safe'),
);
}
public function search()
{
$criteria = new CDbCriteria;
if(!empty($this->minPrice))
$criteria->addCondition('price > '.(int)$this->minPrice);
if(!empty($this->maxPrice))
$criteria->addCondition('price < '.(int)$this->maxPrice);
if(!empty($this->categories))
$criteria->addInCondition('category_id', $this->categories);
// Add more conditions for each property here
return new CActiveDataProvider('Product', array(
'criteria' => $criteria,
// more options here, e.g. sorting, pagination, ...
));
}
}
コントローラーで、検索フォームの新しいインスタンスを作成し、通常どおり検索変数を割り当てます。
public function actionProducts()
{
$searchModel = new ProductSearch();
if(isset($_POST['ProductSearch']))
$searchModel->attributes = $_POST['ProductSearch'];
$this->render('products', array(
'searchModel' => $searchModel,
));
}
最後に、ビューでレンダリングできるようになりました
$searchModel
検索フィルター フォームとなるプロパティの通常の YiiフォームCListView
または、検索結果となるCGridView
を設定しprovider
た場所。$searchModel->search()
チェックボックスには、checkBoxList を使用します。
<?php $this->formCheckBoxList($model, 'categories[]', Category::opts()) ?>
[]
これは配列として投稿する必要があることを示す に注意してください。便宜上、私は通常opts()
、いくつかのモデルで静的メソッドも実装します。これは、 id=>name
dropDownList または checkBoxList オプションに使用できるリストを返します。
基本パターンはこれだけです。簡単に拡張して、非常に強力な検索フォームと結果リストを作成できます。すべての検索関連データを別のモデルに保持する必要があることを常に念頭に置いてください。
于 2013-04-02T09:06:32.277 に答える
0
この拡張機能を試してください: ddautofilter https://bitbucket.org/jwerner/yii-ddautofilter/overview
于 2013-11-02T13:26:44.680 に答える