【问题标题】:Calling function from (Laravel 8) Blade template file从(Laravel 8)Blade 模板文件调用函数
【发布时间】:2021-10-31 05:05:23
【问题描述】:

我在 app/View/Components 中有一个名为 OrderBox.php 的刀片组件。 它有几个公共属性,我可以从 orderbox.blade.php 模板文件中访问。

            <x-orderbox
                    :id="$id"
                    ....
            ></x-orderbox>

但是,OrderBox.php 组件文件中有一个公共函数getShortTextByStatus($statusCode) 当我在 orderbox.blade.php 模板中调用这个函数时

{{ $getShortTextByStatus('EDIT') }}

我得到 未定义的变量:shortTextByStatus 错误

我关注了这个:https://laravel.com/docs/8.x/blade#component-methods 但一切看起来都一样,我错过了什么?

编辑:

如果我删除 $ 我得到 Call to undefined function getShortTextByStatus() 错误

{{ getShortTextByStatus('EDIT') }}

OrderBox.php

class OrderBox extends Component
{

    public $id;
    ....

    public function __construct()
    {
    //
    }

    public function render()
    {
        return view('components.orderbox');
    }

    public function getShortTextByStatus($statusCode)
    {
       return 'TEST';
    }

}

编辑 2:

我注意到 x-orderbox 实际上应该是 x-order-box

<x-order-box
    :id="$id"
     ....
></x-order-box>

这样,{{ $getShortTextByStatus("EDIT") }} 就可以了!

B U T

不传递属性,如 :id="$id" 或

something="static" 

所以公开的$id;或 public $something 将是空的....

【问题讨论】:

  • 你能分享OrderBox.php吗?
  • @WahyuKristianto - 请查看更新后的问题
  • @GJasonSharma - 我确实从内部调用它,我突出显示了文本的那部分
  • 您是否尝试将其重命名为以get 开头的?可能会混淆 Laravel。只是猜测
  • 要使用:id 传递$id,您必须在构造函数中传递它:public function __construct($id) { 并使用$this-&gt;id = id; 设置它

标签: php laravel laravel-blade


【解决方案1】:

所以我在这里犯了几个错误

首先,如果组件名称是OrderBox而不是

标签应该是

<x-order-box></x-order-box>

然后,如果您想将数据传递给您需要的组件(OrdeBox) 将属性添加到构造函数 - 特别感谢 @gert-b (Gert B) 来自评论区

class OrderBox extends Component
{

    public $id;
    public $otherId;
    ....

    public function __construct($id, $otherId)
    {
        $this->id = $id;
        $this->otherId;
    }

    ...
    ...
}

出于某种原因,我认为只有强制属性才能进入构造函数。

而且别忘了,组件类中的属性是camelCase 像公共 $otherId;但在模板中,是kebab case:other-id

<x-order-box
    id="1"
    :other-id="$someVariable"
></x-order-box>

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 2016-12-18
    • 2014-06-20
    • 2017-04-02
    • 2017-09-10
    • 2013-01-09
    • 2014-09-13
    • 2016-04-14
    相关资源
    最近更新 更多