我有一个共享给所有视图的公共变量$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;
}
blade if语句将更改为:
@if (isMainPublisher($publisher))
// Code here
@endif
我正在考虑缩短刀片代码:
@if (isMainPublisher())
// Code here
@endif
但是app/Helpers/general.php
无法访问刀片变量$publisher
,无论如何还是实际上无法访问帮助器中的刀片变量?感谢。
答案 0 :(得分:3)
基本上,如果没有在辅助类的内部变量上设置发布者名称,isMainPublisher($publisher)
是您的最佳选择,而且它的方式比其他选项更加惯用。
为了让isMainPublisher()
工作(可能),你必须使用一个hacky全局声明,即使这样,也可能无法正常工作,因为它不可用于类
ALTERNATIVELY ,您可以将辅助工具添加到模型中作为方法:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
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();
在我看来,这是一个优越的选择,因为它就像你说的那样。
我希望这有帮助!