Laravel中如何在Blade模板中访问模型常量?

10

我想在Blade模板文件中访问一个类常量,而不需要使用完整的路径:

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

在我的Blade文件中,这个是有效的:

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

...但这会抛出类 'PaymentMethod' 未找到的错误。

{{ PaymentMethod::CREDIT_CARD }}

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

2个回答

24

您可以使用别名:

在您的config\app.php文件中,位于aliases部分:

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

然后在您的Blade文件中使用它。

{{ PaymentMethod::CREDIT_CARD }}

2
好的,这个可以工作。但需要添加每个类的常量。这样做不太可接受。 - htclog81

8

在尝试解决同样的问题时发现了这个帖子。决定采用注入类的方法:

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>

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

注入的类需要注册为服务提供者吗? - miken32

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接