对不起。我缩短了我的问题,因为我认为,那些在yii上工作的用户可以很容易地理解我的问题,但现在我正在修改,这样你就可以轻松理解。
我想通过单个控制器/视图一次更新两个不同的表。
_form.php(更新表单)
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'verse-form',
'enableAjaxValidation'=>true,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'topic_id'); ?>
<?php echo $form->textField($model,'topic_id', $model->topic_id); ?>
<?php echo $form->error($model,'topic_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'sorah_id'); ?>
<?php echo $form->textField($model,'sorah_id', $model->topic_id); ?>
<?php echo $form->error($model,'sorah_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'verse_text'); ?>
<?php echo $form->textArea($model,'verse_text',array('rows'=>6, 'cols'=>50)); ?>
<?php echo $form->error($model,'verse_text'); ?>
</div>
<?php
$trans = array();
foreach($model->verseTranslations as $p)
{
$trans[$p->id] = $p->translation_text;
}
?>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
我的_form.php文件中有一个数组。
<?php
$trans = array();
foreach($model->verseTranslations as $p)
{
$trans[$p->id] = $p->translation_text;
}
?>
如果我写print_r($trans);
它的输出就像这样。
Array ( [3] => In the name of ALLAH, most Gracious, most Compassionate. [4] => شروع الله کا نام لے کر جو بڑا مہربان نہایت رحم والا ہے [5] => En el nombre de Alá, el Compasivo, el Misericordioso )
现在我想在yii框架的_form.php文件中将此变量(即$trans
)分配给$model
,以便我可以在控制器上轻松访问它,然后轻松将其提交到单独的表中。
我也想在textArea中使用它。
希望你理解我的问题。
任何帮助将不胜感激。
感谢。
答案 0 :(得分:0)
您无法从视图向控制器发送数组,但有一种方法(无专业方式)可以发送:
将它放在视图中的会话中(_form):
<?php $_SESSION["t"]=$trans;?>
并在控制器中捕获它,然后销毁会话。
$trans=$_SESSION["t"];
最好在控制器本身执行此类操作,而不是在视图中执行此操作并将其传递给控制器!
答案 1 :(得分:0)
而不是在视图文件中执行此任务,您应该在控制器中执行此操作,如
public function actionCreate()
{
$model=new MODELNAME;
// your rest of code
$trans = array();
foreach($model->verseTranslations as $p)
{
$trans[$p->id] = $p->translation_text;
}
// and then you can send this variable to the view by rendering the view file
$this->render('create',array('model'=>$model,'trans'=>$trans));
}
答案 2 :(得分:0)
像这样在模型上添加新属性。
class YOUR_MODEL_WITH_TRANS extends ParentModel
{
public $trans;
---
}
转到您的视图文件并像这样轻松分配。
$model->trans=$trans;