dropDwon carregando do banco com ajax

Criei um dropDown para carregar dinamicamente só que não funciona.

Ao selecionar o estado, carregar as cidades no outro dropqDown.

Em meu _form.php:




<?php

        $estados = Estado::find()->all();

        $listaEstados=ArrayHelper::map($estados,'uf','nome');

    ?>

    <?= $form->field($model, 'clifor_uf')->dropDownList($listaEstados, array('empty' => 'Selecione',

            'ajax' => [

              'type' => 'GET',

              'url' => Yii::$app->urlManager->createUrl('cidade%2Flists'),

              'success' => 'function(data){$("select#clientefornecedor-clifor_cidade").html(data);}',

              'data' => ['uf' => 'js:$(this).val()']

            ]

        ));

    ?>


    <?php

        $cidades = Cidade::find()->all();

        $listaCidade=ArrayHelper::map($cidades,'id','nome');

    ?>

    <?= $form->field($model, 'clifor_cidade')->dropDownList($listaCidade,['prompt'=>'Selecione...']) ?>



Em meu arquivo list.php:




<?php


use yii\helpers\Html;

use yii\widgets\DetailView;


/* @var $this yii\web\View */

/* @var $model app\models\Cidade */


$this->title = $model->id;

$this->params['breadcrumbs'][] = ['label' => 'Cidades', 'url' => ['index']];

$this->params['breadcrumbs'][] = $this->title;

?>

<div class="cidade-view">


    <h1><?= Html::encode($this->title) ?></h1>


    <p>

        <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>

        <?= Html::a('Delete', ['delete', 'id' => $model->id], [

            'class' => 'btn btn-danger',

            'data' => [

                'confirm' => 'Are you sure you want to delete this item?',

                'method' => 'post',

            ],

        ]) ?>

    </p>


    <?= DetailView::widget([

        'model' => $model,

        'attributes' => [

            'id',

            'nome',

            'estado',

        ],

    ]) ?>


</div>



Em meu CidadeCotroller.php:




/**

     * Lista de Cidades com filtro por UF BA

     */

    public function actionLists($uf)

    {

        $countCidades = Cidade::find()

            ->innerJoin('`estado` ON  `cidade`.`estado` =  `estado`.`id`')

            ->where(['`estado`.`uf`' => $uf])

            ->count();

        $cidades = Cidade::find()

            ->innerJoin('`estado` ON  `cidade`.`estado` =  `estado`.`id`')

            ->where(['`estado`.`uf`' => $uf])

            ->orderBy('nome')

            ->all();

        if ($countCidades >0){

            foreach($cidades as $cidade){

                echo "<option value='".$cidade->id."'>".$cidade->nome."</option>";

            }

        } else {

            echo "<option>-</option>";

        }

    }



O Select é gerado dessa forma:




<select id="clientefornecedor-clifor_uf" class="form-control" name="Clientefornecedor[clifor_uf]" empty="Selecione" ajax="{&quot;type&quot;:&quot;GET&quot;,&quot;url&quot;:&quot;\/easymobile\/web\/index.php?r=cidade%252Flists&quot;,&quot;success&quot;:&quot;function(data){$(\u0022select#clientefornecedor-clifor_cidade\u0022).html(data);}&quot;,&quot;data&quot;:{&quot;uf&quot;:&quot;js:$(this).val()&quot;}}">



Tente fazer as seguintes alterações no seu código:




$form->field($model, 'clifor_uf')->dropDownList($listaEstados, array('empty' => 'Selecione',

	'ajax' => [

		'type' => 'GET',

		'url' => 'cidade/lists',

		'success' => 'function(data){

			$.each(data, function (i, item) {

				$('#select#clientefornecedor-clifor_cidade').append($('<option>', { 

					value: item.value,

					text : item.text 

				}));

			});

		}',

		'data' => ['uf' => 'js:$(this).val()']

	]

));






public function actionLists($uf)

{


	$data = [];


	$cidades = Cidade::find()

		->innerJoin('`estado` ON  `cidade`.`estado` =  `estado`.`id`')

		->where(['`estado`.`uf`' => $uf])

		->orderBy('nome')

		->all();

		

	foreach($cidades as $cidade){

		$data[] = ['item' => ['value' => $cidade->id, 'text' => $cidade->nome]];

	}

	

	echo json_encode($data);


}



[]'s

Deu o seguinte erro: syntax error, unexpected ‘value’ (T_STRING), expecting ‘]’