在 blade 模板 {{ route () }} 中使用 JavaScript 变量的问题 
                            
                                                    
                        
                    
                    
  
                    
                    我载 web.php 中定义了一条如下的路由:
Route::get( '/manager/content/get_content_name/{content}',  'ContentsController@get_content_name') -> name('manager.content.get_content_name');ContentsController 控制器中定义如下的方法:
    public function get_content_name(Content $content)
    {
        return ($content->name);
    }在视图中想使用 ajax 通过 pre_content_id 来快速获取 $content->name,ajax 如下
        var pre_content_id = $("label#pre_content_id").text();
        $.ajax({
            url: '{{ route('manager.content.get_content_name', pre_content_id) }}',
            type: 'GET',
            dataType: 'text',
            success: function(result){
                $("label#pre_content_id").text(result);
            }
        });整个逻辑就是这个样子的。
运行结果报错如下
ErrorException (E_ERROR)
Use of undefined constant pre_content_id - assumed 'pre_content_id' (this will throw an Error in a future version of PHP) (View: D:\WebService\laravel\smenu\resources\views\manager\content\show.blade.php)
Previous exceptions
Use of undefined constant pre_content_id - assumed 'pre_content_id' (this will throw an Error in a future version of PHP) (0)现在的问题就是 pre_content_id 是 js 的变量
怎么样才能在 '{{ route('manager.content.get_content_name', pre_content_id) }} 中,让 pre_content_id 这个 js 的变量被 js 解析,而不是被 blade 解析呢。
在解决过程中,尝试了如下的方法:
将路由定义更改为:
Route::get( '/manager/content/get_content_name/{content?}',  'ContentsController@get_content_name') -> name('manager.content.get_content_name');将 ajax 代码更改为:
        var pre_content_id = $("label#pre_content_id").text();
        $.ajax({
            url: '{{ route('manager.content.get_content_name', pre_content_id) }}',
            type: 'GET',
            data:{
                content: pre_content_id
            },
            dataType: 'text',
            success: function(result){
                $("label#pre_content_id").text(result);
            }
        });发现不会报错,后台查看 ajax 的请求地址变为http://test.app/manager/content/get_content_name?content=10005
但是这个请求,仍然不能正常的被路由解析到 ContentsController 控制器的 get_content_name 方法。
我翻了半宿的论坛和手册,也没有找到相关的解答。
当然,我知道是可以直接使用手工拼接 URI 来实现功能,但是我现在就是想通过 {{route()}} 来实现。
脑袋进死胡同了,钻牛角尖了,转不出来了。
希望诸位能帮忙解答一下,或者给一个手册的查找方向。
谢谢
 
           
         
                     
                     
             
             
         
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: