@MaikMain
Начинающий backend - developer

Yii. Как можно использовать php код при формировании JS кода?

Добрый день. У меня есть вот такой код:
spoiler

$script = <<< JS
    $("#delete-select").on("click", function(e){
       e.preventDefault()
       var keys = $("#w0").yiiGridView("getSelectedRows");
       $.ajax({
         url: "\yii\helpers\Url::toRoute(['delete-select']).",
         type: "POST",
         data: {id: keys},
         success: function(){
            alert("yes")
         },
         error : function(){
            alert("Ошибка при отправке данных: перезагрузите страницу!");
          }
       })
   });
JS;
$this->registerJs($script, yii\web\View::POS_READY);



Этот код не выполняется, а в консоль выводится сообщение об ошибке:

Access to XMLHttpRequest at 'yiihelpersurl::toRoute(['delete-select'])' from origin 'site.ru' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https

Обращаю внимание, что он почему-то "\yii\helpers\Url::toRoute(['delete-select'])", выводит как "yiihelpersurl::toRoute(['delete-select'])."


Интересно почему так выводится и как это исправить?
За ранее большое спасибо.
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
Tim-A-2020
@Tim-A-2020
Вы передаёте строку в скрипт. Она там не сформирует ссылку
Более подробно - https://yiiframework.com.ua/ru/doc/guide/2/output-...
$url = \yii\helpers\Url::toRoute(['delete-select']);
$script = <<< JS
    $("#delete-select").on("click", function(e){
       e.preventDefault()
       var keys = $("#w0").yiiGridView("getSelectedRows");
       $.ajax({
         url: "$url",
         type: "POST",
         data: {id: keys},
         success: function(){
            alert("yes")
         },
         error : function(){
            alert("Ошибка при отправке данных: перезагрузите страницу!");
          }
       })
   });
JS;
$this->registerJs($script, yii\web\View::POS_READY);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы