Как определить $ .get URL, используя enablePrettyUrl => true - PullRequest
0 голосов
/ 09 июня 2018

Следующий код будет работать должным образом, если enablePrettyUrl будет установлен на false:

<?php
$script = <<< JS
   $('#zip_code').change(function(){
       var zipId=$(this).val();
       $.get('index.php?r=locations/get-city-province',{zipId:zipId},function(data){
       var data=$.parseJSON(data);
       alert(data.city+" liegt in "+data.province+"! Die Id ist "+zipId);
       $('#customers-city').attr('value',data.city);
       $('#customers-province').attr('value',data.province);
   });
});

JS;
$this->registerJS($script);
?>

Следующий код не будет, если enablePrettyUrl будет установлен true:

 $.get('locations/get-city-province',{zipId:zipId},function(data){

Вот правила UrlManager:

'urlManager' => [
    'class' => 'yii\web\UrlManager',
    'enablePrettyUrl' => true,
    'showScriptName' => true,
    'enableStrictParsing' => true,
    'rules' => [
        'locations' => 'locations/index',
        'locations_create' => 'locations/create',
        'locations_delete' => 'locations/delete',
        'locations_update' => 'locations/update',
        'locations_SaveAsNew' => 'locations/save-as-new',
        'locations_pdf' => 'locations/pdf',
        'locations_view' => 'locations/view',
        // ...
    ],
],

Есть идеи, как правильно кодировать $.get?Вот метод Контроллера:

public function actionGetCityProvince($zipId) {
    $location = Locations::findOne($zipId);
    echo Json::encode($location);
}

1 Ответ

0 голосов
/ 09 июня 2018

Использование Url :: to () или Url :: toRoute ()

<?php
$url = yii\helpers\Url::to(['locations/get-city-province']);
$script = <<< JS
    $('#zip_code').change(function(){
        var zipId = $(this).val();
        $.get('$url', {zipId:zipId}, function(data){
            var data = $.parseJSON(data);
            alert(data.city+" liegt in "+data.province+"! Die Id ist "+zipId);
            $('#customers-city').attr('value',data.city);
            $('#customers-province').attr('value',data.province);
        });
   });
JS;
$this->registerJS($script);
?>
...