如何在laravel blade中动态打印JavaScript变量
我正在使用Pusher构建通知,并将“route”作为JavaScript变量接收到某个页面 现在我想把这个变量作为一个链接注入通知栏,链接到变量中确定的某个页面, 我尝试制作href,并使用laravel url方法将路由放入其中,以便从任何页面访问它。这是密码如何在laravel blade中动态打印JavaScript变量,javascript,laravel,Javascript,Laravel,我正在使用Pusher构建通知,并将“route”作为JavaScript变量接收到某个页面 现在我想把这个变量作为一个链接注入通知栏,链接到变量中确定的某个页面, 我尝试制作href,并使用laravel url方法将路由放入其中,以便从任何页面访问它。这是密码 channel.bind('App\\Events\\Councilcreated', function (data) { var a = document.createElement('a'); a.setAttri
channel.bind('App\\Events\\Councilcreated', function (data) {
var a = document.createElement('a');
a.setAttribute("href", "{{ url(".data.page.") }}");
});
问题是(data.page)打印为字符串而不是(data.page)变量的值我建议您首先将URL存储到javascript变量中,然后将数据添加到其中,然后将其设置为您的href。像下面这样
var url = "{{ url() }}";
a.setAttribute("href", url+'/'+data.page);
//php
$this->page = url($page);
//javascipt
a.setAttribute("href", data.page);
如果您像您所说的那样得到htmlspecialchars()错误,然后像下面那样使用它
var url = "{!! url() !!}";
a.setAttribute("href", url+'/'+data.page);
为什么不从php端传递完整的url并直接在这里使用,如下所示
var url = "{{ url() }}";
a.setAttribute("href", url+'/'+data.page);
//php
$this->page = url($page);
//javascipt
a.setAttribute("href", data.page);
这将不起作用,因为您将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;
}
在页脚中声明一个如下所示的变量
consturl=“{{url()}}”代码>
如果返回任何特殊字符,请使用以下命令:
consturl=“{!!url()!!}”代码>
然后在所有需要的地方继续使用此变量,如:
a.setAttribute(“href”,url+'/'+data.page)
请显示您在事件类中设置页面的位置?`public$councilname;公费$id;公有产权;公费$d;公共信息;公众$page;公众$图标;公共函数构造($councilname、$id、$title、$message、$page、$icon){$d=0;$this->councilname=$this->id=$id;$this->title=$title;$this->message=$message;$this->page=$page;$this->icon=$icon;}`它在控制台中成功打印。frst sugget return LAVEL exception htmlspecialchars()期望参数1为字符串,object given我将页面保存在通知表中,保存整个url是否正确?不要保存在表中,只需像我建议的那样,从事件中重新运行整个url即可$this->page=url($page)代码>我将页面保存在DB的通知表中,保存整个url正确吗?@SamehMohamedOmar是的,保存通知的整个url没有问题。return Larvel exception htmlspecialchars()希望参数1是字符串,对象必须是url()指定的某个特殊字符
方法正在返回。我已经更新了答案。