Laravel 在助手中访问 blade 变量
Laravel access blade variable in helper
我有一个 public 变量 $publisher
共享给所有视图:
$view->with('publisher', $publisher);
示例:我想检查此发布者名为 'main' 并且状态为 'active',因此我必须在 blade 中编写 if 语句,如下所示:
@if ($publisher->name == 'main' && $publisher->status == 'active')
// Code here
@endif
所有 blade 文件都复制了它,因此我在 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
我正在考虑将 blade 代码缩短为:
@if (isMainPublisher())
// Code here
@endif
但是app/Helpers/general.php
不会访问blade变量$publisher
,有没有办法或者实际上没有办法访问helper中的blade变量?谢谢。
本质上,如果不在助手 class 的内部变量上设置发布者名称,isMainPublisher($publisher)
是您的最佳选择,而且它比其他选项更惯用。
为了让 isMainPublisher()
工作(可能),你将不得不使用一个 hacky 全局声明,即使那样,它也可能无法工作,因为它对 class
替代方法,您可以将助手作为方法添加到模型中:
<?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();
在我看来,这是更好的选择,因为它读起来就像你说的那样。
希望对您有所帮助!
我有一个 public 变量 $publisher
共享给所有视图:
$view->with('publisher', $publisher);
示例:我想检查此发布者名为 'main' 并且状态为 'active',因此我必须在 blade 中编写 if 语句,如下所示:
@if ($publisher->name == 'main' && $publisher->status == 'active')
// Code here
@endif
所有 blade 文件都复制了它,因此我在 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
我正在考虑将 blade 代码缩短为:
@if (isMainPublisher())
// Code here
@endif
但是app/Helpers/general.php
不会访问blade变量$publisher
,有没有办法或者实际上没有办法访问helper中的blade变量?谢谢。
本质上,如果不在助手 class 的内部变量上设置发布者名称,isMainPublisher($publisher)
是您的最佳选择,而且它比其他选项更惯用。
为了让 isMainPublisher()
工作(可能),你将不得不使用一个 hacky 全局声明,即使那样,它也可能无法工作,因为它对 class
替代方法,您可以将助手作为方法添加到模型中:
<?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();
在我看来,这是更好的选择,因为它读起来就像你说的那样。
希望对您有所帮助!