2016-05-11 11 views
-1

ich eine json wie diese:Yü Json zu Array Dropdown

{"response":{"count":7,"list":[{"kdTeacher":"001","nmTeacher":"Eulis Irma"},{"kdTeacher":"002","nmTeacher":"Ni Wayan"},{"kdTeacher":"003","nmTeacher":"Dwi Widi"}]},"metaData":{"message":"OK","code":200}} 

Ich mag die Lehrer-Namen und die Lehrer-Code-Anzeige in Dropdownlist.

In meinem Controller wie folgt aus:

$model=new Teacher; 

$paises = file_get_contents(Yii::getPathOfAlias('webroot.assets') . 
    DIRECTORY_SEPARATOR . "teacher.json"); 
$jsondecode = CJSON::decode($paises, true); 

$temp = array(); 

foreach ($jsondecode as $key => $value) { 
     $temp[] = $value; 
} 

    $this->render('techer', array(
     'data'=>$temp, 
     'model'=>$model, 
    )); 
} 

und im Hinblick

<div class="row"> 
    <?php echo $form->labelEx($model,'name'); ?> 
    <?php echo $form->dropDownList($model,'nama',CHtml::listData($data,'kodeTeacher','nmTeacher')); ?> 
    <?php echo $form->error($model,'name'); ?> 
</div> 

id

+0

Wenn Sie fragen, eine Frage, es sollte eine Frage sein und keine Tag Cloud. – peterh

+0

Bitte versuchen Sie Ihre Rechtschreibung zu verbessern. Obwohl High-Level-Englisch hier nicht erwartet wird, aber Sie können viel bessere Akzeptanz erhalten, wenn Sie diese [sechs einfache Rechtschreibregeln] folgen (http://meta.stackoverflow.com/questions/291362/my-question-was-downvoted-closed) -wurde-es-war-voll-grammatikalisch-fehler-wh/291370 # 291370). – peterh

Antwort

0

Problem ist, dass Sie nicht Lehrer-Daten bekommen können, weil Sie für foreach falsche Daten verwenden Schleife. Der Lehrercode und der Name werden unter dem Index ['response']['list'] des dekodierten JSON gespeichert. Werfen Sie einen Blick:

$model=new Teacher; 

$paises = file_get_contents(Yii::getPathOfAlias('webroot.assets') . 
    DIRECTORY_SEPARATOR . "teacher.json"); 

$decodedJson = json_decode($paises, true); 
$temp = array(); 

//check if list of teachers is available 
if(isset($decodedJson['response']) && isset($decodedJson['response']['list'])) 
{ 
    //use foreach on ['response']['list'] index - here are teachers data stored 
    foreach($decodedJson['response']['list'] as $teacher) 
     $temp[$teacher['kdTeacher']] = $teacher['nmTeacher']; 
} 

$this->render('techer', array(
    'data'=>$temp, 
    'model'=>$model, 
)); 

Arbeitsbeispiel der Lehrer Daten von JSON erhalten: CLICK!!!

Und im Hinblick auf (jetzt brauchen Sie nicht CHtml::listData Methode verwenden):

<div class="row"> 
    <?php echo $form->labelEx($model,'name'); ?> 
    <?php echo $form->dropDownList($model,'nama',$data); ?> 
    <?php echo $form->error($model,'name'); ?> 
</div>