如何在 Yii 中将数组分配给$model


how to assign array to $model in yii

抱歉。我缩短了我的问题,因为我认为那些在 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 ) 

现在我想分配这个变量,即 $trans $model yii 框架_form.php文件中,以便我可以轻松地在控制器上访问它,然后轻松地将其提交到单独的表中。我也想在文本区域中使用它。

希望你能理解我的问题。

任何帮助将不胜感激。

谢谢。

而不是在视图文件中执行此任务,您应该在控制器中执行此操作,例如

 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));
    }

您不能将数组从视图发送到控制器,但有一种方法(无专业方法)可以发送:

将其放在视图的会话中 (_form):

<?php  $_SESSION["t"]=$trans;?>

并在控制器中捕获它,然后销毁会话。

$trans=$_SESSION["t"];
最好在控制器

本身中执行此类操作,而不是在视图中执行并将其传递给控制器!

这样在模型上添加新属性。

class YOUR_MODEL_WITH_TRANS extends ParentModel
{
    public $trans;
    ---
}

转到您的视图文件并像这样轻松分配它。

$model->trans=$trans;