繁体   English   中英

Laravel:在刀片模板内调用静态函数

[英]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内部调用相同的函数,则会向我显示所需的信息,但与上面的示例不同。

这是为什么 ?

您可以使用cache()config()以及其他全局帮助程序代替Facades来避免这种问题。

在刀片模板内,您可以编写如下内容:

{{ $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM