亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 7 - 沒有視圖的組件

Laravel 7 - 沒有視圖的組件

PHP
ibeautiful 2023-03-04 10:53:35
我想創建一個只提供數據而沒有視圖的組件。例如:<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:順便說一句,你不應該把你的過濾邏輯放在你的控制器里。模型應該對此負責。


查看完整回答
反對 回復 2023-03-04
  • 1 回答
  • 0 關注
  • 129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號