如何在Laravel 4中使用数组中的If-else?

时间:2014-12-15 21:38:27

标签: php arrays laravel laravel-4

我正在使用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”

提前感谢您的帮助! :)

2 个答案:

答案 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
});