Laravel - 如何在视图中创建(匿名)动态刀片组件

Posted

技术标签:

【中文标题】Laravel - 如何在视图中创建(匿名)动态刀片组件【英文标题】:Laravel - how to create (anonymous) Dynamic Blade Components in Views 【发布时间】:2020-09-28 19:50:36 【问题描述】:

使用 Laravel 7 和新添加的刀片组件--

我有一些返回数组的动态字段。在数组内部包含存储为“布局”的每个“组件”,我有一个完全以组件类命名的组件。在我的基本视图中,我正在循环遍历数组并渲染组件:

@if ($page->content)
    //@dd($page->content):
    -- array:1 [▼
        0 => #425 ▼
            +"layout": "wysiwyg"
            +"key": "W0yC0KtNgPV8N4ua"
            +"attributes": #1303 ▼
            +"alignment": "default"
            +"background_color": "default"
            +"text": "<h1>Hello World</h1>"
            
        
        ] --
    @foreach ($page->content as $content)
        <x- $content->layout  :content="$content"/>
    @endforeach
@endif

但是,这不会呈现任何内容(它是空白的)。已编译刀片的源代码显示&lt;x-wysiwyg :component="$content"/&gt;,因此它的行为就像根本没有编译一样。但是,如果我明确更新我的 foreach 循环组件内容:&lt;x-wysiwyg :content="$content"/&gt;,它会工作并呈现组件。

如何动态加载带有值的组件?

【问题讨论】:

我认为这将是 Laravel 解析刀片模板的顺序问题。如果你输入旧式布局@include 是否有效? 【参考方案1】:

这在 Laravel 7 中实际上是不可能的,但很快就会在 Laravel 8 中实现:

https://twitter.com/taylorotwell/status/1265681297286082562

<x-dynamic-component :component="$componentName" class="mt-4" />

编辑:现已发布 - https://laravel.com/docs/8.x/blade#dynamic-components

【讨论】:

这是否适用于匿名组件? @EugenevanderMerwe 是的,laravel.com/docs/8.x/blade#dynamic-components 非常感谢。当我的组件位于子目录中时我很挣扎,但是当我将它们移动到组件文件夹的根目录时它起作用了。

以上是关于Laravel - 如何在视图中创建(匿名)动态刀片组件的主要内容,如果未能解决你的问题,请参考以下文章

如何动态创建新的匿名类?

黄油刀ButterKnife的使用

在 laravel 中动态创建刀片

在laravel中查看路由动态数据数组

如何使控制器数据覆盖 Laravel 中的视图控制器?

laravel:将视图插入数组