[英]Laravel: call static function inside blade template
我发现了非常奇怪的情况。 我有一个包含一些结果的集合,我想为每个结果抓取保存在缓存信息中的信息。 为此,我有一个Cache类,它具有一个静态函数get()。 不幸的是,当我在Blade模板的foreach循环中调用它时,我什么也没收到。
@foreach($prognoses as $sport_prognose)
<?php
$pr = Cache::get(Config::get('variables.cache.prediction'), ['id' => $sport_prognose['id']]);
print_r($pr);
die();
?>
@endforeach
如果我在Controller内部调用相同的函数,则会向我显示所需的信息,但与上面的示例不同。
这是为什么 ?
在刀片模板内,您可以编写如下内容:
{{ $pc::getProducts($ship->products) }}
注意变量的使用。 显然,getProducts是控制器内部的静态方法,而$ ship-> products是来自数组的变量。 让我们简单点:假设$ ship-> products是1,而getProducts是这个:
static function getProducts($id) { echo "id is $id; }
如果运行此脚本,则会收到错误消息,因为模板缺少$ pc的值。 您如何解决这个问题? 您需要将$ this的值传递给模板:
return View::make('shipping.index')->with(['pc' => $this, 'shipping' => $shippings);
在这里,shipping.index是模板,pc的值为$ this,这使$ pc可以访问刀片模板内的getProducts。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.