[英]Update two models of different databases with single view in yii
我有一個具有字段(名稱,摘要)提交按鈕的視圖(_form.php)。 如果我單擊提交按鈕,它將更新一個模型的名稱字段和另一個模型的摘要字段。這兩個模型都屬於不同的數據庫。 任何人都可以幫忙。 我為此嘗試了以下
在_form.php(測試)
<?php echo $form->labelEx($model, ‘name’); ?>
<?php echo $form->textField($model, ‘name’, array(‘size’ => 60, ‘maxlength’ => 250)); ?>
<?php echo $form->error($model, ‘name’); ?>
<?php echo $form->labelEx(Test1::model(), ‘summary’); ?>
<?php echo $form->textField(Test1::model(), ‘summary’, array(‘size’ => 60, ‘maxlength’ => 250)); ?>
<?php echo $form->error(Test1::model(), ‘summary’); ?>
<?php echo CHtml::submitButton($model->isNewRecord ? ‘Create’ : ‘Save’); ?>
在TestController.php中
public function actionCreate() {
$model = new Test;
if (isset($_POST['Test'])) {
$model->attributes = $_POST['Test'];
if ($model->save()) {
$modeltest1 = new Test1;
$modeltest1->attributes = $_POST['Test1'];
$modeltest1->Id = $model->Id;
if ($modeltest1->save())
$this->redirect(array('view', 'Id' => $model->Id));
}
}
$this->render('create', array(
'model' => $model,
));
}
該代碼不起作用。 如何使它適用於不同的數據庫。 我為此點擊了以下鏈接。
http://www.yiiframework.com/wiki/291/update-two-models-with-one-view/
這段代碼實際上應該可以工作,但是不好。
我假設您根本不了解什么是模型及其在Yii中的功能,以及如何渲染和創建表單。
我將嘗試解釋它應該如何。
首先,不要在視圖中使用Test::model()
,除非您想從中調用某個函數(但要避免使用它)。 可以通過從控制器傳遞它來完成:
public function actionCreate() {
$model_name = new Name;
$model_summary=new Summary;
//something here
$this->render('create', array(
'name' => $model_name,
'summary'=>$model_summary,
));
}
進行渲染時,將變量傳遞到視圖(name_in_view => $ variable)
2號 在您看來,您可以使用變量。
<?php echo $form->labelEx($name, ‘name’);
echo $form->textField($name, ‘name’, array(‘size’ => 60, ‘maxlength’ => 250));
echo $form->error($name, ‘name’);
echo $form->labelEx($summary, ‘summary’);
echo $form->textField($summary, ‘summary’, array(‘size’ => 60, ‘maxlength’ => 250)); ?>
echo $form->error($summary, ‘summary’); ?>
echo CHtml::submitButton($model->isNewRecord ? ‘Create’ : ‘Save’); ?>
第三名 您需要了解什么是模型。 在這種情況下,它是擴展CActiveRecord的類。 您在控制器中的代碼應如下所示:
public function actionCreate() {
$model_name = new Name;
$model_summary=new Summary;
if (isset($_POST['Name']))
$model_name->attributes=$_POST['Name'];
if (isset($_POST['Summary']))
$model_name->attributes=$_POST['Summary'];
if ($model_name->save()&&$model_summary->save())
$this->redirect(array('view', 'Id' => $model->Id));
$this->render('create', array(
'name' => $model_name,
'summary'=>$model_summary,
));
}
$model->attributes=$_POST[]
這是屬性的批量分配,因此它們在規則中必須安全。 您總是可以用手分配屬性(1比1),也可以形成一個數組並將其從數組中推入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.