【问题标题】:Geting multiple Records in update in Yii在 Yii 中获取多个更新记录
【发布时间】:2014-09-06 04:54:03
【问题描述】:

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

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

家庭控制器更新方法

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,所以现在它返回一个数组。现在如何处理视图中的那个数组?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    好的,我自己想通了,发布这个也许可以帮助需要它的人。我认为我做了以下事情。

    <?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
        }
        ?>
    

    【讨论】:

    • 如果您正确设置模型关系,您还应该能够使用$home-&gt;images(或者无论您如何调用该关系)。关系应该是这样的 'images' =&gt; array(self::HAS_MANY, 'Image', 'homeId'), 并且应该在 home 中定义。所以在视图中你也可以使用'$home->images as $image'或者使用$images = $home-&gt;images在控制器中定义图像。并不是说你知道它的方式是错误的,只是想把它扔在那里。 yiiframework.com/doc/guide/1.1/en/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2014-05-18
    • 1970-01-01
    • 2011-07-06
    相关资源
    最近更新 更多