簡體   English   中英

Laravel。 在同一個視圖中使用兩個控制器

[英]Laravel . Using two controllers in the same view

我對 laravel 真的很陌生。 所以我只是在做一個簡單的項目。 我構建了一個具有其視圖的 Postscontroller。 所以問題是我想將此擴展到在 view_one_post.blade.php 視圖中添加評論。 所以我應該創建 CommentsController,但我不知道如何使用 CommentsController@index 列出評論,而且我不確定這個方法應該返回什么視圖,因為我在相同的帖子視圖中使用評論,即 view_one_post.blade.php? 我已經看到了這個問題的一些答案,但它與我的情況不符

您應該能夠使用 View Composer 實現此目的。 您可以為評論創建一個視圖,該視圖可以包含在任何其他視圖中。 View Composer 將允許您在呈現之前將數據綁定到此視圖。

use App\Comment;
use Illuminate\View\View;

class CommentsComposer
{
    protected $comment;

    public function __construct(Comment $comment)
    {
        $this->comment = $comment;
    }

    public function compose(View $view)
    {
        $view->with('comments', $this->comment->latest()->take(10)->get());
    }
}

在服務提供者的boot方法中,您可以將作曲家附加到您的視圖中:

View::composer('partials.commments', 'App\Composers\CommentsComposer');

在任何你想使用該視圖的地方,你都可以將它包含在 Blade 中:

@include('partials.comments')

這使您可以為處理此視圖部分所需的數據的邏輯提供一個隔離的位置,並且它只需要擔心一個責任。 與 Controller 不同,Composer 不需要擔心處理請求或響應。

Laravel 7.x 文檔 - 視圖 - 查看作曲家View::composer

Laravel 7.x 文檔 - 刀片 - 包括子視圖@include

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM