【问题标题】:How to use an If-else within an array in Laravel 4?如何在 Laravel 4 的数组中使用 If-else?
【发布时间】:2015-02-14 02:44:04
【问题描述】:

我正在使用 Laravel 4。

app/config/prod/app.php

我有一堆东西,像这样布置,

<?php

return array(

‘debug’ => “fault”

// and more ...

)

我想根据身份验证用户类型将我的 default 值设置为不同的值。

IF用户类型是admin,我想设置debug为true ELSE 将其设置为 false。

我可以在 PHP 的数组中进行 if-else 检查吗?

我尝试过使用三元运算符,但没有成功。我希望我没有做错什么。

isset( Auth::user()->type == “Admin” ) ? ‘debug’ => “true” : ‘debug’
 => “fault”

提前感谢您的帮助! :)

【问题讨论】:

  • 这与 Laravel 无关。学习 PHP。

标签: php arrays laravel laravel-4


【解决方案1】:

您通常可以对 value 使用三元运算符,而不是完整的键值对

'debug' => (Auth::user()->type == "Admin" ? true : false)

但是,我不确定加载此配置时可用的内容(Auth::user() 可能不是)。让我知道这是否有效,我会回复您。

更新

一个小测试刚刚证实了我的假设。解析配置文件时,Auth 类不可用。这意味着您必须在之后设置该值。我建议您将默认设置保留为'debug' =&gt; 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)
    }
});

【讨论】:

  • 我应该把它们放在哪里?我尝试了你的两个建议。我得到了this。它没有显示任何应有的调试提示。
  • App::before 放入app/filters.php。看看app/storage/logs/laravel.log,你可以看到你的错误信息。
  • 我这样做了,但没有用 :(。另外,为什么我需要查看日志?谢谢 :)
  • 对于错误信息?您发布的屏幕截图是因为调试已关闭(app/config/app.php)您也可以暂时打开它
  • 我的目标是一直打开它,只要Auth::user()-&gt;type == "Admin",我不认为,这很重要,因为它是我。 :)
【解决方案2】:

您可以创建一个新过滤器,然后将其应用于您要检查的路线。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多