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


How to use an If-else within an array in Laravel 4?

我正在使用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
});