在我的管理页面中,我想使用AngularJS管理我的电子商务产品。
e.g。 admin / product将在admin / api / product
中查询api我还没有设置用户身份验证,所以我还不知道用户是否是管理员用户。
我只希望在管理页面上包含angularjs管理脚本。
只有当路由组是admin时,才能在我的视图中包含角度adminapp.js。例如对于面向公众的页面,我不会将adminapp.js暴露给面向公众的页面。
我知道如果用户被认证为管理员,我可以这样做 - 但如果路由组是管理员,我希望能够这样做。
Route::group(['prefix' => 'admin', 'namespace' => 'Admin'], function() {
Route::group(['prefix' => 'api', 'namespace' => 'Api'], function() {
Route::resource('product', 'ProductController');
});
Route::group(['namespace' => 'Product'], function() {
Route::get('product', 'ProductController');
});
});
在templates.master.blade.php
之类的内容:
@if($routeGroupIsAdmin)
{{ HTML::script('js/adminapp.js') }}
@endif
甚至:
{{ Route::getCurrentRoute()->getPrefix() == 'admin'? HTML::script('js/adminapp.js') : HTML::script('js/app.js') }}
但上面例子的问题是,如果我处于深层嵌套视图:admin / categories / products,那么我的前缀将不再是admin。我不想沿着使用正则表达式检测路由前缀中的单词admin
的路线。
答案 0 :(得分:5)
我知道没有内置的方式,但这里有一些有效的方法:
首先,添加路由过滤器
Route::filter('set-route-group', function($route, $request, $value){
View::share('routeGroup', $value);
});
然后将此添加到您的管理员组(您将来也可以将其用于其他组):
Route::group(['prefix' => 'admin', 'namespace' => 'Admin', 'before' => 'set-route-group:admin'], function(){
还要在routes
文件的顶部添加此项,以确保始终设置$routeGroup
变量:
View::share('routeGroup', null);
然后在你看来:
@if($routeGroup == 'admin')
{{ HTML::script('js/adminapp.js') }}
@endif
答案 1 :(得分:0)
您可以使用路段。
如果您的网上论坛前缀为“ admin”,并且网址看起来像这样http://example.com/admin/home
,
您可以使用Request::segment(1)
在刀片上对其进行检查。它将呈现URL的第一段。
@if(Request::segment(1) == 'admin')
{{HTML::script('js/adminapp.js')}}
@endif
如果要检查另一个段,只需更改索引即可。