如何使它工作,如果语句根本不起作用
<script>
@if(Session::has('messege'))
var type="{{Session::get('alert-type','info')}}"
switch(type){
case 'info':
toastr.info("{{ Session::get('messege') }}");
break;
case 'success':
toastr.success("{{ Session::get('messege') }}");
break;
case 'warning':
toastr.warning("{{ Session::get('messege') }}");
break;
case 'error':
toastr.error("{{ Session::get('messege') }}");
break;
}
@endif
</script>
希望有人帮助我:)
答案 0 :(得分:0)
让我们简化一下。不要依赖PHP来执行超出您所需依赖范围的JS代码,这是指将Session::get("messege")
转换为JS变量并在您的JS代码中使用它:
<script type="text/javascript">
let message = "{{ Session::get('messege') }}";
let type = "{{ Session::get('alert-type', 'info') }}";
console.log(message, type);
if(message){
switch (type) {
case "info":
toastr.info(message);
break;
case "success":
toastr.success(message);
break;
case "warning":
toastr.warning(message);
break;
case "error":
toastr.error(message);
break;
}
}
</script>
只要此<script>
位于.blade.php
文件中,它将Session::get()
变量转换为JS,然后您就可以在JS代码中使用它,而不必依赖刀片{{ 1}}语法。另外,在@
语句中添加了语句,以便您可以查看变量包含的内容,以确认代码是否正在执行。另外,打开开发人员工具(在浏览器中为F12)并查看“控制台”标签;应该告诉您是否有任何问题。
答案 1 :(得分:-1)
好的,我发现您提供的代码存在一些问题。
因此,您不需要将@if
包装在<script>
标记中。 Laravel使用Blade对其进行解析并自动执行。
另外,您将message
拼写错误,这可能就是语句根本没有执行的原因。当代码无法按预期方式工作时,必须仔细检查语法。
您还可以在PHP中设置变量,因为您尚未提供任何有关代码存储位置或代码含义的信息,因此,仅在使用PHP时不要使用JavaScript。在PHP中使用type
符号设置变量$
。同样,通过删除<script>
标签,您可能会获得Laravel exception
,其中包含有关代码为何无法正常工作的更多信息。
尝试一下,如果仍然有问题,请发布Laravel错误,我会尽力为您提供帮助。