@if在脚本TAG laravel

时间:2018-11-15 14:50:53

标签: laravel

如何使它工作,如果语句根本不起作用

<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>

希望有人帮助我:)

2 个答案:

答案 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错误,我会尽力为您提供帮助。