【问题标题】:Check if any table fields are empty and return a HTML class in Laravel 5检查任何表格字段是否为空并在 Laravel 5 中返回一个 HTML 类
【发布时间】:2015-09-30 08:43:46
【问题描述】:

我需要检查几个数据库表字段中的任何一个或所有字段是否为空,以及它们中的任何一个是否返回 HTML(或 Blade)中的类。

目前我这样做:

<body class="app @if (Auth::user()->site_title == '' | Auth::user()->full_name == '' | Auth::user()->country == '' | Auth::user()->city == '') newuser @endif">

如果字段为空,它会提示用户完成它们的模式。

一切都很好,但我希望有一种更简洁的方法来做到这一点,因为我需要再次使用相同的 @if 语句在页面底部相应地隐藏/显示模式。

也许从用户模型返回一些东西?

【问题讨论】:

  • 我看不出有任何理由不将 if 条件提取到 User 方法中。然后你可以“Auth::user()->isNew()”来缩短它。

标签: php laravel eloquent laravel-5 blade


【解决方案1】:

您可以在控制器中执行此检查,将结果分配给变量并将其传递给视图。这样,您可以轻松地在视图中多次使用此变量。

另一种(可能更简洁)的方法是在用户模型中进行。您可以将此逻辑放在 User::isNewUser() 方法中,然后从您的控制器或直接从您的视图中调用它。

【讨论】:

    【解决方案2】:

    在您的身份验证模型上定义一个返回布尔值的方法。

    类似这样的:

    public function isNew()
    {
        $attributes = ['site_title', 'full_name', 'country', 'city'];
        foreach ($attributes as $attribute) {
            if (empty($this->$attribute)) {
                return true;
            }
        }
    
        return false;
    }
    

    然后在您看来,您只需检查此方法:

     <body class="app @if (Auth::user()->isNew()) newuser @endif">
    

    【讨论】:

    • 谢谢 这看起来像我需要的,如何将字段名称分配为属性?
    • 我确实解决了这个问题,但我得到了这个错误Call to undefined function App\Models\is_empty(),我不知道为什么。也试过isEmpty
    • 我的错,正确的函数名是empty;把它和is_null混在一起@
    • 先生,您是传奇! :)
    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多