2014-03-28 85 views
0

这将是一个普遍的问题里面,具体(约Yii的),使用其他模型的模型

我只是想知道这是否是一个很好的做法,或只是如果它的正确:

在我的_form视图,我正在调用另一个模型,而不是使用当前模型;

// @model Clients 
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'myid-form', 
'enableAjaxValidation'=>false, 
)); ?> 

<div class="row"> 
    <?php echo $form->labelEx($model,'Debtor'); ?> 
    <?php echo $form->dropDownList($model, 'Debtor' 
     , CHtml::listData(Debtor::model()->findAll(), 'DebtorCode', 'DebtorDesc'),array('empty'=>'(Select Debtor)')); ?> 
    <?php echo $form->error($model,'Debtor'); ?> 
</div> 

如果我错了,谁能告诉我什么是正确的方式,它成为一种习惯之前..

TIA

回答

1

我觉得你的问题是不正确的。您正在询问如何在模型中调用另一个模型。但是你提供的代码,你正在视图中使用另一个模型。显然,一个观点不是一个模型。
也许你的问题是“我可以在视图中使用另一个模型,除了使用其他模型的yii生成代码”。
回答您的问题:是的,你可以这样使用它,如果你谈论使用模型没有什么不对。 但是你已经在你的视图中编写了一个DB代码(findAll),这不是一个好的做法.Yii是一个MVC框架,其基本主题是分离演示文稿和数据访问。是的,你可以做到这一点Yii不会反对Yii哲学。其次,如果你在视图中访问Db,那么你的代码不再是“非常好的可管理代码”。这将是一个平均代码,因为在您的视图中使用Db访问,您或其他编码人员很难确定正在进行的操作以及如何在需要时修改代码。
您可以编写代码在你的控制器一样

$debtor=Debtor::model()->findAll(); 
$debtorList=CHtml::listData($debtor,'DebtorCode','DebtorCode'); 
$this->render('my _form',array('debtorList'=>$debtorList)); 

在你看来,你中央社使用它像

<?php echo $form->dropDownList($model, 'Debtor' 
     , $debtorList,array('empty'=>'(Select Debtor)')); ?>