Yii可恢复错误“类****的对象无法转换为字符串”

时间:2014-04-24 11:28:47

标签: php yii

在我的网络应用程序中,我有两个模型,即" ProducerOffer"和"蔬菜"。我需要创建一个" ProducerOffer"的对象。里面"蔬菜"模型视图动作。我需要创建一个" ProducerOffer"的对象。里面的模型"蔬菜" model.But我正在查找此错误,无法跟踪源。 我得到的错误

Object of class ProducerOffer could not be converted to string

我在蔬菜控制器中写的代码

public function actionCreateOffer($id)
{

    $model=$this->loadModel($id);
    $ProducerOffer=new ProducerOffer;
    if(isset($_POST['ProducerOffer'])AND (isset($_POST['Vegetable'])) ) 

    {
        $ProducerOffer->attributes=$_POST['ProducerOffer'];
        $model->attributes=$_POST['Vegetable'];
        $ProducerOffer->vegetable_id=$model->id;
        if($model->validate()  AND  $ProducerOffer->validate()) {


        $model->save();
        $ProducerOffer->save();
        }   

        if (($model->hasErrors() === false)&&($ProducerOffer->hasErrors()===false))
        {
            $this->redirect(Yii::app()->user->returnUrl);
        }   





    }
    else
    {

        Yii::app()->user->setReturnUrl($_GET['returnUrl']);
    }
    $this->render('offer',array('ProducerOffer'=>$ProducerOffer,'model'=>$model));



}

我为我的观点编写的代码名为" offer.php"。

<div style='padding-left:50px'>
<?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm',array('id'=>'non-ajax_form','enableAjaxValidation'=>false,)); ?>
<p class="help-block">Fields with <span class="required">*</span> are required.</p>

<?php echo $form->errorSummary($model,$ProducerOffer); ?>

<b><?php echo CHtml::encode($model->getAttributeLabel('name')); ?>:</b>


<?php echo CHtml::textField("Vegetable[name]",$model->name); ?>


<b><?php echo CHtml::encode($ProducerOffer->getAttributeLabel('offered_qty')); ?>:</b>


<?php echo CHtml::textField("ProducerOffer[offered_qty]",$ProducerOffer->offered_qty); ?>

<?php echo CHtml::encode($ProducerOffer->getAttributeLabel('unit_cost')); ?>

<?php echo CHtml::textField("ProducerOffer[unit_cost]",$ProducerOffer->unit_cost); ?>




<?php echo CHtml::encode($ProducerOffer->getAttributeLabel('unit_delivery_cost')); ?>

<?php echo CHtml::textField("ProducerOffer[unit_delivery_cost]",$ProducerOffer->unit_delivery_cost); ?>






<div class="form-actions">
    <?php $this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'submit', 'type'=>'primary', 'label'=>  'Save',)); ?> 
    <?php $this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'reset', 'type'=>'primary', 'label'=> 'Reset')); ?>
   <?php $this->widget('bootstrap.widgets.TbButton', array('buttonType'=>'link', 'type'=>'primary', 'label'=> 'Cancel','url'=>Yii::app()->user->returnUrl,)); ?>

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

我在ProducerOffer模型中的关系函数

public function relations()
    {
        return array(
                'producerOfferVegetableRelation' => array(self::BELONGS_TO, 'Vegetable', 'vegetable_id'),
}

我在蔬菜模型中的关系函数

public function relations()
    {

        return array(
                'producerOfferRelation'=> array(self::BELONGS_TO, 'Vegetable', 'id'),
        );
    }

我无法找出错误的来源?我该如何解决这个问题? 我在浏览器显示的这一行中收到错误

<?php echo $form->errorSummary($model,$ProducerOffer); ?>

在控制器中

 $this->render('offer',array('ProducerOffer'=>$ProducerOffer,'model'=>$model));

我在这些方面遇到错误。

1 个答案:

答案 0 :(得分:1)

错误可能在这一行:

<?php echo $form->errorSummary($model,$ProducerOffer); ?>

此方法的第二个参数是string $header,但您传递的是$ ProducerOffer。 改变它:

<?php echo $form->errorSummary(array($model, $ProducerOffer)); ?>

或者像这样:

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

(亲自尝试,我不记得确切地将模型数组作为第一个参数传递)