首頁 >php教程 >PHP开发 >Yii2實作上下連動下拉框功能的方法

Yii2實作上下連動下拉框功能的方法

高洛峰
高洛峰原創
2016-12-23 16:50:091379瀏覽

本文實例講述了Yii2實作上下連動下拉框功能的方法。分享給大家供大家參考,具體如下:

首先我先解釋下什麼是上下連動的下拉框

假如一個view裡面有兩個select,第一個是公司名,第二個是分公司名。公司有多個,每個公司又有多個分公司,我們實現的就是點擊當前公司後,分公司裡面顯示的事當前公司的分公司。

或你直接理解成選擇所屬省份後,下面的select顯示的是當前省份的縣。

原理:

點選第一個select後,執行ajax取得目前公司的分公司,並使用jQuery修改分公司內容

兩個select的部分視圖程式碼如下:

<?= $form->field($model, &#39;companies_company_id&#39;)->dropDownList(
  \yii\helpers\ArrayHelper::map(\backend\models\Companies::find()->all(),&#39;company_id&#39;,&#39;company_name&#39;),
  [
    &#39;prompt&#39;=>&#39;select Company&#39;,
    &#39;onchange&#39;=>&#39;
      $.post("index.php?r=branches/lists&id=&#39;.&#39;"+$(this).val(),function(data){
        $("select#departments-branches_branch_id").html(data);
      });&#39;,
  ]
) ?>
<?= $form->field($model, &#39;branches_branch_id&#39;)->dropDownList(
  \yii\helpers\ArrayHelper::map(\backend\models\Branches::find()->all(),&#39;branch_id&#39;,&#39;branch_name&#39;),
  [
    &#39;prompt&#39;=>&#39;Select Branches&#39;,
  ]
) ?>

public function actionLists($id)
{
  $countBranches = Branches::find()
    ->where([&#39;companies_company_id&#39; => $id])
    ->count();
  $branches = Branches::find()
    ->where([&#39;companies_company_id&#39; => $id])
    ->all();
  if ($countBranches > 0) {
    foreach ($branches as $branche) {
      echo "<option value=&#39;" . $branche->branch_id . "&#39;>" . $branche->branch_name . "</option>";
    }
  } else {
    echo "<option>-</option>";
  }
}

   

希望本文所述對大家以Yii框架為基礎的PHP程式設計有所幫助。

更多Yii2實現上下聯動下拉框功能的方法相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn