Laravel:如何从刀片模板访问类常量

Kim*_*nce 6 laravel blade

我在我的模型中使用了很多类常量。当我想在刀片中使用它们时,我首先在模板顶部导入它们。

例如:

@php
    use App\Model\Core\User;
@endphp
Run Code Online (Sandbox Code Playgroud)

稍后在模板中我使用它们,如下例所示。

<option value="@php echo User::MY_CONSTANT @endphp">This is an option</option>
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方法来解决这个问题?将 a 直接导入namespace由模板引擎管理的变量范围似乎有点粗糙。我IDE (phpstorm)肯定不喜欢它。

Dan*_*ell 6

我通过使用PHP 常量函数来完成此任务。由于 Blade 允许您直接调用任何 PHP 函数,因此您可以通过此函数访问任何公共类常量,而无需将任何内容导入视图中。所以,你的例子看起来像这样:

<option value="{{ constant('App\Model\Core\User::MY_CONSTANT') }}">This is an option</option>
Run Code Online (Sandbox Code Playgroud)

IDE 注意:既然您提到您使用 PhpStorm,那么此解决方案的唯一缺点是 PhpStorm 不会检查您传递给常量函数的 FQCN 字符串,因此它不会帮助您在键入时自动完成常量(不据我所知,可以解决这个问题),并且无法按住 Ctrl 键单击它以跳转到课程。第二个问题得到了缓解,因为您可以快速突出显示 FQCN 中的“用户”,然后单击 ctrl-n(其“搜索类”功能的默认映射),生成的类搜索对话框将预加载突出显示的内容文本