Как динамически печатать переменную JavaScript в лезвии laravel

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

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

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

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

Пожалуйста, не могли бы вы показать, где вы устанавливаете page в своем классе событий?

Rwd 20.05.2019 07:55

`общественное имя_совета; публичный $id; публичный $титул; публичный $d; публичное $сообщение; публичная $страница; общедоступная иконка $; публичная функция __construct($councilname,$id,$title,$message,$page,$icon) {$d=0; $this->название_совета = $имя_совета; $это->идентификатор = $идентификатор; $это->заголовок = $заголовок; $это->сообщение = $сообщение; $эта->страница = $страница; $this->icon = $icon; }`

Sameh Mohamed Omar 20.05.2019 07:58

он успешно напечатан в консоли

Sameh Mohamed Omar 20.05.2019 08:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
2 180
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Я предлагаю вам сначала сохранить свой 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);

первое предложение возвращает исключение laravel htmlspecialchars() ожидает, что параметр 1 будет строкой, объект задан

Sameh Mohamed Omar 20.05.2019 08:08

Я сохраняю страницу в таблице уведомлений. Правильно ли сохранить весь URL-адрес?

Sameh Mohamed Omar 20.05.2019 08:09

не сохраняйте его в таблице, просто верните весь URL-адрес вашего мероприятия, как я предлагаю $this->page = url($page);

Karan Sadana 20.05.2019 08:11

Это не сработает, поскольку вы смешиваете 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);
});

Я сохраняю страницу в таблице уведомлений в БД. Правильно ли сохранить весь URL-адрес?

Sameh Mohamed Omar 20.05.2019 08:10

@SamehMohamedOmar Да, нет ничего плохого в сохранении всего URL-адреса для уведомлений.

Rwd 20.05.2019 08:15

В нижнем колонтитуле объявите такую ​​​​переменную

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

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

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

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

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

вернуть исключение laravel htmlspecialchars() ожидает, что параметр 1 будет строкой, объект задан

Sameh Mohamed Omar 20.05.2019 08:11

Должен быть какой-то специальный символ, который возвращает ваш метод url(). Я обновил ответ.

Deepak Singh 20.05.2019 08:20

Другие вопросы по теме