【发布时间】:2018-09-30 17:08:08
【问题描述】:
我有一个公共变量$publisher 共享给所有视图:
$view->with('publisher', $publisher);
示例:我想检查这个发布者是否被命名为“main”并且状态为“active”,因此我必须在刀片中编写 if 语句,如下所示:
@if ($publisher->name == 'main' && $publisher->status == 'active')
// Code here
@endif
它为所有刀片文件复制,因此我在app/Helpers/general.php 创建了一个自定义帮助文件,将其命名为isMainPublisher($publisher):
function isMainPublisher($publisher)
{
return ($publisher->name == 'main' && $publisher->status == 'active') ? true: false;
}
刀片if语句将改为:
@if (isMainPublisher($publisher))
// Code here
@endif
我正在考虑将刀片代码缩短为:
@if (isMainPublisher())
// Code here
@endif
但是app/Helpers/general.php 不会访问blade 变量$publisher,无论如何或实际上没有办法访问helper 中的blade 变量?谢谢。
【问题讨论】:
-
不是一个直接的答案,但是在 Publisher 对象上使用
isMain()方法不是更有意义吗?并称之为$publisher->isMain()。它更具表现力。除此之外,您可以使用变量$isMainPublisher而不是助手并与所有视图共享它。 -
@AH.Pooladvand 他们为什么要这样做?如果这与模型有关,我相当肯定它确实如此,那么将方法添加到模型中会更有意义。实际上,如果 OP 需要在其他任何地方再次使用该方法,他就可以将它放在模型上,而无需重新编写它。永远记住 DRY 原则!
-
@Derek 我完全同意你的回答,但他想要
@if (isMainPublisher())逻辑,所以我试图给他他想要的东西。 -
那是不可行的。您如何获得
isMainPublisher()中的$publisher变量? -
@Momo 我同意 Derek 的回答。
标签: laravel laravel-5.4 blade