【问题标题】:laravel access to model constant in bladelaravel 访问刀片中的模型常量
【发布时间】:2021-12-10 00:56:47
【问题描述】:

我想在不使用完整路径的情况下访问 Blade 文件中的类常量:

class PaymentMethod extends Model
{
    const PAYPAL_ACCOUNT = 'paypal_account';
    const CREDIT_CARD    = 'credit_card';
}

在我的刀片文件中这是有效的:

{{ App\Classes\Models\PaymentMethod::CREDIT_CARD }}

...但这会引发Class 'PaymentMethod' not found

{{ PaymentMethod::CREDIT_CARD }}

有没有更简洁的方法来访问这个常量?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    你可以使用别名:

    config\app.php 下的aliases 部分:

    aliases => [
         ....
        'PaymentMethod' => App\Classes\Models\PaymentMethod::class
    ]
    

    然后在你的刀片文件中使用它

    {{ PaymentMethod::CREDIT_CARD }}
    

    【讨论】:

    • 好的,这项工作。但需要为每个类添加常量。这是不太可接受的
    【解决方案2】:

    在尝试解决相同问题时发现了此线程。决定去injecting the class

    namespace App\Services\Auth\IAM;
    
    class IAMConstants
    {
        const GUARD_WEB = 'web';
        const GUARD_ADMIN = 'admin';
    }
    

    然后在 Blade 中:

    @inject('constants', 'App\Services\Auth\IAM\IAMConstants')
    ...
    <option value="{{ $constants::GUARD_WEB }}">App user</option>
    

    注入的类应该很小,因为它将携带所有依赖项。

    【讨论】:

    • 注入的类不需要是注册的服务提供者吗?
    猜你喜欢
    • 2023-03-04
    • 2017-08-19
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2023-02-26
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多