簡體   English   中英

Yii2:如何將新變量從視圖發送到控制器?

[英]Yii2: How to send new variable from view to controller?

我有一個名為idname字段的人員表。

我有一個create.php視圖,該視圖加載了名為Persons的模型,現在我想添加一個名為hasCar的復選框,以顯示一個人是否有汽車(這是布爾條件)。

然后,我具有將表單$ model數組發送到控制器的send按鈕,因此我需要將hasCar變量添加到$ model數組。

但是該復選框不是人員表的列,因此出現了一些錯誤,因為它不是模型的一部分。

我以這種方式添加了該復選框,但是它當然無法正常工作。

<?= $form->field($model, 'hasCar')->checkbox(); ?>

是否可以在$ model數組中發送hasCar變量? 我的意思是,當按下發送按鈕時,如何將hasCar變量發送到控制器?

創建一個新的擴展Person的模型,該模型包含hasCar成員,並從PersonForm類中加載模型,例如:

class PersonForm extends Person
{
    public $hasCar;

    public function rules()
    {
        return array_merge(parent::rules(), [
            [['hasCar'], 'safe'],
        ]);
    }   

    public function attributeLabels()
    {
        return array_merge(parent::attributeLabels(), [
            'hasCar' => 'Has car',
        ]);
    }      
}

您不能將變量傳遞給與數據庫表關聯的$ model對象軌道,您是正確的。 您需要通過請求方法(GET,POST)將變量傳遞給控制器​​。

嘗試:

Yii::$app->request->post()

用於POST,以及:

Yii::$app->request->get()

GET。

同樣在表單上,​​添加復選框作為HTML類組件。

例:

控制器:

...
$hasCar = Yii::$app->request->post('hasCar');
....

視圖:

...
// We use ActiveFormJS here
$this->registerJs(
    $('#my-form').on('beforeSubmit', function (e) {
        if (typeof $('#hasCar-checkbox').prop('value') !== 'undefined') {
            return false; // false to cancel submit
        }
    return true; // true to continue submit
});
$this::POS_READY,
'form-before-submit-handler'
);
...
<?= HTML::checkbox('hasCar', false, ['id' => 'hasCar-checkbox', 'class' => 'form-control']) ?>
...

有關ActiveFormJS的更多信息: 在此處輸入鏈接描述

希望這個答案能對您有所幫助。

達米安

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM