如何在yii中使用CActiveForm制作动态文本区域

时间:2013-12-11 11:16:57

标签: php yii

我想动态地在yii中创建cactiveform中的文本区域。但我收到错误,即“财产”Verse.translation“未定义”

我的数据库中有translation_text字段,而不是translation字段。其次$trans['translation_text']显示经文翻译,但是当我将其保留在textArea中时,它会给出错误。正如我所描述的那样。

我有一个代码。

<?php foreach($model->verseTranslations as $trans) { ?>
<?php $model->translation = $trans['translation_text']; ?>
<?php echo $form->textArea($model,'translation',array('rows'=>6, 'cols'=>50)); ?>
<?php } ?>

但我不知道如何在textArea中保留值$trans['translation_text']

任何帮助将不胜感激。

由于

3 个答案:

答案 0 :(得分:1)

这样做:

<?php foreach($model->verseTranslations as $trans) { ?>
<?php echo $form->textArea($model,'translation',array('value'=>$trans['translation_text'],'rows'=>6, 'cols'=>50)); ?>
<?php } ?>

在RobM之前所说的模型中,但不要忘记在Verse类中为“翻译”属性添加验证器! :

class Verse extends CActiveRecord
{
    public $translation;
    public function rules()
    {
        return array(   
                   array(
                           'translation',
                           'safe',
                           'on'=>'',
                    ),
                    //others validators here
                );
     }
}

答案 1 :(得分:0)

只需将$form->textArea中的第二个参数替换为$trans['translation_text'],即可将其变为:

<?php echo $form->textArea($model, $trans['translation_text'], array('rows'=>6, 'cols'=>50)); ?>

第二个参数是textArea的值,因此这里任何变量的值都将显示为文本区域元素的默认值。

答案 2 :(得分:0)

在模型中添加翻译属性到Verse类

class Verse extends CActiveRecord
{
        public $translation;