Как распечатать переменную JavaScript динамически в лезвии laravel - PullRequest
1 голос
/ 20 мая 2019

Я создаю Уведомление, используя Pusher, и я получаю «маршрут» на какую-то страницу в качестве переменной JavaScript

Теперь я хочу добавить эту переменную в панель уведомлений как ссылку на некоторую страницу, определенную впеременная, я пытаюсь сделать href и поместить в него маршрут, используя метод laravel url для доступа к нему с любой страницы.вот код

channel.bind('App\\Events\\Councilcreated', function (data) {
    var a = document.createElement('a');
    a.setAttribute("href", "{{ url(".data.page.") }}");
});

Проблема в том, что печатается (data.page) как строка, а не как значение переменной (data.page)

Ответы [ 3 ]

3 голосов
/ 20 мая 2019

Я предлагаю вам сначала сохранить ваш URL-адрес в переменной javascript, затем добавить в него ваши данные и затем установить его для вас href. что-то вроде ниже.

var url = "{{ url() }}";
a.setAttribute("href", url+'/'+data.page);

Если вы получили ошибку htmlspecialchars (), как вы сказали, а затем используйте ее, как показано ниже

    var url = "{!! url() !!}";
a.setAttribute("href", url+'/'+data.page);

Почему вы не передаете полный URL-адрес со стороны php и напрямую используете его здесь, как показано ниже.

//php
$this->page = url($page);

//javascipt
a.setAttribute("href", data.page);
0 голосов
/ 20 мая 2019

В нижнем колонтитуле объявите переменную, подобную этой

const url = "{{ url() }}";

Если возвращается какой-либо специальный символ, используйте это:

const url = "{!! url() !!}";

и затем продолжайте использовать эту переменную во всех необходимых местах, как это:

a.setAttribute("href", url+'/'+data.page);

0 голосов
/ 20 мая 2019

Это не будет работать, так как вы смешиваете JavaScript с php, т.е. когда эта функция выполняется, у вас не будет доступа к функции url, как это будет выполняться в браузере.

Я бы предложил сделать page полностью определенным URL-адресом в вашем классе событий, т. Е. Использовать там url() функцию:

public function __construct($councilname, $id, $title, $message, $page, $icon)
{
    $d = 0;
    $this->councilname = $councilname;
    $this->id = $id;
    $this->title = $title;
    $this->message = $message;
    $this->page = url($page); // <-- This line
    $this->icon = $icon;
}

Тогда в вашем слушателе событий JS вам просто понадобится:

channel.bind('App\\Events\\Councilcreated', function (data) {
    var a = document.createElement('a');
    a.setAttribute("href", data.page);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...