[英]Yii2: How to send new variable from view to controller?
我有一個名為id和name字段的人員表。
我有一個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.