我正在使用Laravel 4.
app/config/prod/app.php
中的
我有一系列的东西,像这样,
<?php
return array(
‘debug’ => “fault”
// and more ...
)
我想根据auth用户类型将default
值设置为不同的东西。
IF 用户类型为admin,我想将debug设置为true ELSE 将其设置为false。
我可以在PHP中的数组中进行if-else检查吗?
我尝试过使用三元运算符,但没有运气。我希望我没有做错任何事。
isset( Auth::user()->type == “Admin” ) ? ‘debug’ => “true” : ‘debug’
=> “fault”
提前感谢您的帮助! :)
答案 0 :(得分:1)
您通常可以使用三元运算符作为值而不是完整键值对
'debug' => (Auth::user()->type == "Admin" ? true : false)
但是,我不确定加载此配置时可用的内容(Auth::user()
可能不是)。让我知道这是否有效,我会回复你。
一点点测试证实了我的假设。解析配置文件时,Auth
类不可用。这意味着您必须在之后设置该值。我建议您将默认设置保留为'debug' => false
,如果用户是admin,则使用此选项:
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)
}
});
答案 1 :(得分:0)
您可以创建一个新过滤器,然后将其应用于您要检查的路线。
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
});