【问题标题】:How to print JavaScript variable dynamically in laravel blade如何在 laravel Blade 中动态打印 JavaScript 变量
【发布时间】:2019-05-20 05:42:12
【问题描述】:

我正在使用 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) 变量的值

【问题讨论】:

  • 请您说明您在活动课程中设置page 的位置吗?
  • ` public $councilname;公共$id;公共 $title;公共$d;公共$消息;公共$页面;公共$图标;公共函数 __construct($councilname,$id,$title,$message,$page,$icon) { $d=0; $this->councilname = $councilname; $this->id = $id; $this->title = $title; $this->message = $message; $this->page = $page; $this->icon = $icon; }`
  • 在控制台打印成功

标签: javascript laravel


【解决方案1】:

我建议您首先将您的 URL 存储到一个 javascript 变量中,然后将您的数据添加到其中,然后将其设置为您的 href。如下所示。

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

如果你像你说的那样遇到 htmlspecialchars() 错误,然后像下面这样使用它

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

为什么你不从 php 端传递完整的 url 并直接在这里使用它,如下所示。

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

//javascipt
a.setAttribute("href", data.page);

【讨论】:

  • 第一个建议返回 laravel 异常 htmlspecialchars() 期望参数 1 是字符串,给定对象
  • 我将页面保存在通知表中,保存整个网址是否正确?
  • 不要将其保存在表格中,只需像我建议的$this->page = url($page);
【解决方案2】:

这将不起作用,因为您将 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);
});

【讨论】:

  • 我将页面保存在数据库的通知表中,保存整个网址是否正确?
  • @SamehMohamedOmar 是的,保存通知的整个 URL 没有任何问题。
【解决方案3】:

在你的页脚中声明一个像这样的变量

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

如果返回任何特殊字符,请使用:

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

然后在所有需要的地方继续使用这个变量,如下所示:

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

【讨论】:

  • 返回 laravel 异常 htmlspecialchars() 期望参数 1 是字符串,给定对象
  • 必须是您的 url() 方法返回的一些特殊字符。我已经更新了答案。
猜你喜欢
  • 2018-10-12
  • 1970-01-01
  • 2015-01-11
  • 2020-11-16
  • 2015-02-27
  • 2016-07-01
  • 2012-10-11
  • 2020-08-01
相关资源
最近更新 更多