在Yii中获取更新中的多个记录

时间:2014-09-05 20:25:33

标签: php yii

我正在开发这个网站,要求我在一个视图中组合两个模型,它们之间有一对多的关系。模型名称为Home和Image,意味着Home有许多图像,但Image只有一个Home。

我已经将视图组合在一起,但我遇到的问题是获取所有图像。例如,我有6个图像,我想显示它们,或者如果我有5个图像,我想显示它们。

Home Controller UpdateMethod

public function actionUpdate($id)
    {
        $home=$this->loadModel($id);
        $image=Image::model()->findByAttributes(array('homeId'=>$home->id));

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if(isset($_POST['Home'],$_POST['Image'])){
            $home->attributes=$_POST['Home'];
            $image->attributes=$_POST['Image'];

            $valid=$home->validate();
            $valid=$image->validate() && $valid;

            if($valid){
                if($home->save()){
                    $image->save();

                }
            }
        }

        $this->render('update',array(
            'home'=>$home,
            'image'=>$image,
        ));


    }

我的_form.php 将他们加在一起

<div class="form">

    <?php $form=$this->beginWidget('CActiveForm', array(
        'id'=>'home-form',
        // Please note: When you enable ajax validation, make sure the corresponding
        // controller action is handling ajax validation correctly.
        // There is a call to performAjaxValidation() commented in generated controller code.
        // See class documentation of CActiveForm for details on this.
        'enableAjaxValidation'=>false,
    )); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary($home); ?>


    <div class="row">
        <?php echo $form->labelEx($image,'imageUrl'); ?>
        <?php echo $form->textField($image,'imageUrl',array('size'=>60,'maxlength'=>100)); ?>
        <?php echo $form->error($image,'imageUrl'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($home,'recentEvents'); ?>
        <?php echo $form->textField($home,'recentEvents',array('size'=>60,'maxlength'=>100)); ?>
        <?php echo $form->error($home,'recentEvents'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($home,'introduction'); ?>
        <?php echo $form->textArea($home,'introduction',array('rows'=>6, 'cols'=>50)); ?>
        <?php echo $form->error($home,'introduction'); ?>
    </div>

    <div class="row buttons">
        <?php echo CHtml::submitButton($home->isNewRecord ? 'Create' : 'Save'); ?>
    </div>

    <?php $this->endWidget(); ?>

</div><!-- form -->

更新我在模型中使用了FindByattribues而不是FindAllByAttribues,所以它现在返回一个数组。现在如何在视图中处理该数组?

1 个答案:

答案 0 :(得分:0)

好吧,我自己发现这个可能会帮助那些需要它的人。我认为我做了以下几点。

<?php
    foreach($image as $image){
        ?>

        <div class="row">
            <?php echo $form->labelEx($image,'imageUrl'); ?>
            <?php echo $form->textField($image,'imageUrl',array('size'=>60,'maxlength'=>100)); ?>
            <?php echo $form->error($image,'imageUrl'); ?>
        </div>
        <?php
    }
    ?>