我正在使用Laravel 4。
在app/config/prod/app.php
我有一系列的东西,像这样布置,
<?php
return array(
‘debug’ => “fault”
// and more ...
)
我想根据身份验证用户类型将我的default
值设置为不同的事物。
如果用户类型是admin,我想将调试设置为true否则将其设置为 false。
我可以在 PHP 中的数组中进行 if-else 检查吗?
我试过使用三元运算符,但没有运气。我希望我没有做错任何事。
isset( Auth::user()->type == “Admin” ) ? ‘debug’ => “true” : ‘debug’
=> “fault”
提前感谢您的帮助! :)
您通常可以做的是使用三元运算符作为值,而不是完整的键值对
'debug' => (Auth::user()->type == "Admin" ? true : false)
但是,我不确定加载此配置时有什么可用(Auth::user()
可能不是)。让我知道这是否有效,我会回来找你。
更新
一个小测试刚刚证实了我的假设。分析配置文件时,Auth
类不可用。这意味着您之后必须设置该值。我建议您将默认值保留为 'debug' => false
,如果用户是管理员,请使用它:
if(Auth::user()->type == 'Admin'){
Config::set('app.debug', true)
}
只要"足够早",您就可以在任何地方执行此操作。例如,您可以使用全局App::before
(以filters.php
为单位)
App::before(function($request){
if(Auth::check() && Auth::user()->type == 'Admin'){
Config::set('app.debug', true)
}
});
您可以创建一个新的筛选器,然后将其应用于要检查的路由。
Route::filter('check_admin', function()
{
if( Auth::user()->type == 'Admin' ){
Config::set('app.debug',true)
}
});
现在,您可以像这样使用过滤器:
Route::get('my-url', ['before'=>'check_admin'],function(){
// Do your route logic here
});