ホームページ > バックエンド開発 > PHPチュートリアル > yiiフレームワークドロップダウンを使用してカスケードメニューを作成する

yiiフレームワークドロップダウンを使用してカスケードメニューを作成する

巴扎黑
リリース: 2023-03-02 18:00:01
オリジナル
1271 人が閲覧しました

yii フレームワーク ドロップダウンを使用してカスケード メニューを作成します


多くの場合、フォーム、カスケード都市、またはカスケード カテゴリやその他の機能が必要になります。ドロップダウン ボックスが 2 つあり、一方の値はもう一方のドロップダウン ボックスに依存します。 Yii の組み込み ajax 機能を使用すると、このようなドロップダウン ボックスを作成できます。これを実装する方法を以下に示します。

最初はフォームのビューです。国を表示するフォームが表示され、国に基づいて都市が表示されます。
プログラムコードプログラムコード
echo CHtml::dropDownList('country_id','', array(1=>'アメリカ',2=>'フランス',3=>'日本') ,
array(
'ajax' => array(
'type'=>'POST', //リクエストタイプ
'url'=>'dynamiccities', // 呼び出すURL
'update'=> ; '#city_id', //更新するセレクター
//'data'=>'js:javascript ステートメント'
//すべてのフォーム値を渡すためにデータ キーを省略します
)));他のドロップダウンによって埋められるため空です
echo CHtml::dropDownList('city_id','', array());


最初のドロップダウン ボックスは、次の値と名前のペアで構成されます。国の構成。 。これが変更されると、ajax リクエストは現在のコントローラーの「ダイナミシティ」アクションによって完了します。リクエストの結果 (「dynamiccities」アクションの出力) は、2 番目の ID が #city_id であるドロップダウン ボックスに置き換えられます。

次はコントローラー アクションです。これは 2 番目のドロップダウン ボックスに入力する HTML を出力します。また、最初のドロップダウン ボックスの値によっても異なります。
プログラムコードプログラムコード
public function actionDynamiccities()
{
$data=Location::model()->findAll('parent_id=:parent_id',
array(':parent_id'=> ( int) $_POST['country_id']));

$data=CHtml::listData($data,'id','name');
foreach($data as $value=>$name)
{
を通じて を通じて を通じて を通じて を通じて を通じて を通じて ‐‐‐‐‐‐‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ { parent_id は最初のドロップダウン ボックスの値です。これらすべての都市がラベルに出力され、最終的に 2 番目のドロップダウン ボックスが形成されます。

$_POST['country_id'] がどこから来たのか疑問に思われるかもしれません。非常に簡単です。最初のドロップダウン ボックスの ajax 配列の「data」キーが空の場合、ドロップダウン ボックスが配置されているフォームのすべての要素の値が、ajax 経由でコントローラーに渡されます。リクエスト。 Firebug を使用している場合は、このリクエストを表示できます。

この動作は変更することもできます。デフォルトでは、Ajax 構成配列の「data」キーの値は js:jQuery(this).parents("form").serialize() です。 先頭の js: は、以下が JavaScript ステートメントでありエスケープすべきではないことを Yii に伝えます。したがって、「data」キーを「js:」で始まる別のステートメントに変更すると、独自のステートメントを入力できます。 「success」パラメータでも機能します。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート