2014-03-28 2 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)')); ?> 
처럼 사용 CNA의