Php 在模型中使用另一个模型
这将是一个一般性问题,具体而言(关于Yii) 我只想知道这是一种好的做法,还是正确的做法: 在我的表单视图中,我调用的是另一个模型,而不是当前使用的模型Php 在模型中使用另一个模型,php,yii,yii-cactiverecord,Php,Yii,Yii Cactiverecord,这将是一个一般性问题,具体而言(关于Yii) 我只想知道这是一种好的做法,还是正确的做法: 在我的表单视图中,我调用的是另一个模型,而不是当前使用的模型 // @model Clients <?php $form=$this->beginWidget('CActiveForm', array( 'id'=>'myid-form', 'enableAjaxValidation'=>false, )); ?> <div class="row"> <
// @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>
/@model客户端
如果我错了,有人能告诉我什么是正确的方法吗
TIA我认为你的问题不对。您询问的是如何调用模型中的另一个模型。但是您提供的代码在视图中使用的是另一个模型。显然,视图不是模型。
也许您的问题是“除了yii生成的代码中使用了其他模型外,我是否可以在视图中使用其他模型”。
回答您的问题:是的,您可以这样使用,如果您谈论使用模型,这没有什么问题但是您在视图中编写了一个DB代码(findAll),这不是一个好的实践。Yii是一个MVC框架,其基本主题是分离表示和数据访问。是的,你可以做到。我不会反对,但这违背了我的哲学。其次,如果您在视图中访问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)')); ?>