我有一个公共变量$publisher
共享给所有视图:
$view->with('publisher', $publisher);
示例:我想检查此发布者是否命名为"主要"并且状态为"活动",因此我必须在刀片中编写 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
不会$publisher
访问刀片变量,是否有或实际上没有办法在助手中访问刀片变量?谢谢。
本质上,除了在帮助程序类的内部变量上设置发布者名称之外,isMainPublisher($publisher)
是您的最佳选择,并且它比其他选项更惯用。
为了让isMainPublisher()
工作(可能(,你必须使用一个黑客的全局声明,即使这样,它也可能不起作用,因为它对类不可用。
或者,您可以将帮助程序作为方法添加到模型中:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Publisher extends Model
{
// Your new helper method
public function isMain()
{
// some logic to determine if the publisher is main
return ($this->name == "main" || $this->name == "blah");
}
}
。然后像这样称呼它:
$publisher->isMain();
在我看来,这是更好的选择,因为它读起来就像你说的那样。
我希望这有帮助!