<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 收集列表輸入 有時你需要在一個表單中以單一的形式處理多個模型。例如,有多個設置,每個設置存儲為一個 name-value,并通過?`Setting`?[活動記錄](http://www.yiichina.com/doc/guide/2.0/db-active-record)模型來表示。 這種形式也常被稱為“列表輸入”。與此相反,處理不同模型的不同類型,在[多模型同時輸入](http://www.yiichina.com/doc/guide/2.0/input-multiple-models)章節中介紹。 下面展示了如何在 Yii 中收集列表輸入。 在三種不同的情況下,所需處理的略有不同: * 從數據庫中更新一組固定的記錄 * 創建一個動態的新記錄集 * 更新、創建和刪除一頁記錄 與之前介紹的單一模型表單相反,我們現在用的是一個數組類的模型。這個數組將每個模型傳遞到視圖并以一種類似于表格的方式來顯示表單字段。 我們使用 yii\base\Model 助手類方法來一次性地加載和驗證多模型數據: * yii\base\Model::loadMultiple() 將數據加載到一個數組中。 * yii\base\Model::validateMultiple() 驗證一系列模型。 ### 更新一組固定的記錄 讓我們從控制器的動作開始: ~~~ <?php namespace app\controllers; use Yii; use yii\base\Model; use yii\web\Controller; use app\models\Setting; class SettingsController extends Controller { // ... public function actionUpdate() { $settings = Setting::find()->indexBy('id')->all(); if (Model::loadMultiple($settings, Yii::$app->request->post()) && Model::validateMultiple($settings)) { foreach ($settings as $setting) { $setting->save(false); } return $this->redirect('index'); } return $this->render('update', ['settings' => $settings]); } } ~~~ 在上面的代碼中,當用模型來從數據庫獲取數據時,我們使用 yii\db\ActiveQuery::indexBy() 來讓模型的主鍵成為一個數組的索引。 其中 yii\base\Model::loadMultiple() 用于接收以 POST 方式提交的表單數據并填充多個模型, yii\base\Model::validateMultiple() 一次驗證多個模型。 正如我們之前驗證的模型,使用了?`validateMultiple()`,現在通過傳遞?`false`?作為 yii\db\ActiveRecord::save() 的一個參數使其不會重復驗證兩次。 現在在?`update`?視圖的表單: ~~~ <?php use yii\helpers\Html; use yii\widgets\ActiveForm; $form = ActiveForm::begin(); foreach ($settings as $index => $setting) { echo $form->field($setting, "[$index]value")->label($setting->name); } ActiveForm::end(); ~~~ 在這里,我們為每個設置渲染了名字和一個帶值的輸入。重要的是給 input name 增加添加適當的索引, 因為這是由 yii\base\Model::loadMultiple() 來決定以哪些值來填補哪個模型。 ### 創建一組動態的新記錄 創造新的記錄與修改記錄很相似,除部分實例化模型不同之外: ~~~ public function actionCreate() { $count = count(Yii::$app->request->post('Setting', [])); $settings = [new Setting()]; for($i = 1; $i < $count; $i++) { $settings[] = new Setting(); } // ... } ~~~ 在這里,我們創建了一個初始的?`$settings`?數組包含一個默認的模型,所以始終至少有一個文本字段是可見的。 此外,我們為每個可能會收到的輸入行添加更多的模型。 在視圖中,可以使用 JavaScript 來動態地添加新的輸入行。 ### 把更新,創建和刪除結合在一個頁面上 > 注意:此章節正在開發中。 > > 還沒有內容。 TBD
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看