2014-10-31 6 views
1

내에서 실행 기능 Yii의 드롭 다운 목록에서 트 리뷰의 값을 나열하려고합니다. 그래서, 이미 경로에서 트리 뷰를 연결하는 함수 (예 : primary \ secondary \ terciary)를 가지고 있습니다. 데이터에서 ID를 전달하고 함수를 호출하여 부모를 선택하여 데이터베이스에서 목록을 만드는이 함수는CHtml :: listData - yii

이 사용
public static function getPath($id) { 

     $post=PlanoAssunto::model()->find('id=:id', array(':id'=>$id)); 

     if ($post->id_pai == null) { 
     $row=$post->assunto; 
     $data= $row;  
     } 
     else { 
     $row=$post->assunto; 
     $row=PlanoAssunto::getPath($post->id_pai).'/'.$row; 
     $data= $row;} 

     if (isset($data)) { 
      return $data;  
      } 
      else { 
       $data = 'Nulo'; 
       return $data; 
      }    
} 

뷰에서이 작품 벌금 :

<?php echo $form->labelEx($model,'id_pai');?> 

     <?php if (isset($_GET['id'])){ 
       echo PlanoAssunto::model()->getPath($_GET['id']); } 
       else { echo "Novo Assunto Principal";} 
     ?> 

는하지만 지금은 경로 목록, 형태, 선별을 채우려 그리고 CHTML ::되는 listData 내에서 실행 기능을 기울인다.. 나는이 모델을 가지고 성공하려고 노력하고있다.

public static function getTypeOptions() { 
    return CHtml::listData(PlanoAssunto::model()->findAll(),'id','getPath($id)');   
} 

그래서 내가 잘못하고있는 것은 무엇입니까? 데이터베이스에서 그의 ID와 관련된 값으로 경로 형식으로 트리 뷰를 배치하는 방법을 관리 할 수 ​​없습니다.

ListData에서 값을 채울 수있는 방법이 없으므로 내 HTML은 ID를 반환하지만 값이있는 데이터는 반환합니다.

<select name="Areaxplanoassunto[idAssunto]" id="Areaxplanoassunto_idAssunto"> 
<option value="1"></option> 
<option value="2"></option> 
<option value="3"></option> 
<option value="4"></option> 
<option value="5"></option> 
<option value="6"></option> 
<option value="7"></option> 
<option value="9"></option> 
<option value="10"></option> 
<option value="11"></option> 
</select> 

Tks. (나는 Brasil 출신이기 때문에 영어에 대해 미안하다.)

답변

0

나는 해결책을 찾는다.

ID에서 ID와 PATH를 배열에 넣으려면 다른 함수를 만들어야합니다. 그래서이 함수를 CHtml :: listData와 모든 함수에서 호출합니다.

코드입니다 :

public static function getLista(){ 
     $models = PlanoAssunto::model()->findAll(); 

     foreach($models as $model) { 
       $row['id'] = $model->id; 
       $row['path'] = PlanoAssunto::getPath($model->id); 
       $data[] = $row; 
     }  
     if (isset($data)) { 
      return $data;  
      } 
      else { 
       $data['id'] = 'Nulo'; 
       $data['path'] = 'Nulo'; 
       return $data; 
      }            
} 

그리고 CHTML과 결과를 복용 gettypeoptions :: ListData의 _form보기

<?php echo $form->dropDownList($model,'idAssunto', PlanoAssunto::model()->getTypeOptions()); ?> 

결과에

public static function getTypeOptions() { 

    return CHtml::listData(PlanoAssunto::model()->getLista(),'id','path');   
} 

는 드롭 다운입니다 경로 형식으로 treeview. 질문이 있으시면, 더 자세히 설명 드리겠습니다.