我想创建一个只提供数据而没有视图的组件。例如:<x:wg.items.listing :items="$items->items()" :filter="$obj->settings['filter']"> @foreach($items as $item) {{ $item->title }} @endforeach </x:wg.items.listing>Blade 组件获取一个集合:items和一个:filter. 标签之间应该有一个可用的过滤集合。清单.php:class Listing extends Component{ public $items; public $filter; /** * Create a new component instance. * * @return void */ public function __construct($filter="0", $items="0") { $this->filter = $filter; $this->items = $items; } /** * Get the view / contents that represent the component. * * @return \Illuminate\View\View|string */ public function render() { $this->items = app()->make("App\\Http\\Controllers\\Frontend\\BlogController")->generateList($this->items, $this->filter); /*return view('components.wg.items.list');*/ }}不Listing.php应该呈现视图,因为项目集合仅在上面的 Blade x 标签中可用components.wg.items.list,而不在它们之间可用。这可能吗?先感谢您!
1 回答

达令说
TA贡献1821条经验 获得超6个赞
你不能做这样的事;您在组件中声明的每个变量仅在组件本身中可用。
... 除非您想以真正肮脏的方式来做。然后你可以使用全局变量:
<x:wg.items.listing :items="$items->items()" :filter="$obj->settings['filter']">
@php
global $filtered_items;
@endphp
@foreach($filtered_items as $item)
{{ $item->title }}
@endforeach
</x:wg.items.listing>
public function render()
{
global $filtered_items;
$filtered_items = app()->make("App\\Http\\Controllers\\Frontend\\BlogController")->generateList($this->items, $this->filter);
return "{{ $slot }}";
}
PS:顺便说一句,你不应该把你的过滤逻辑放在你的控制器里。模型应该对此负责。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消