【问题标题】:Laravel . Using two controllers in the same view拉拉维尔。在同一个视图中使用两个控制器
【发布时间】:2020-04-26 14:45:27
【问题描述】:

我对 laravel 真的很陌生。所以我只是在做一个简单的项目。我建立了一个 Postscontroller 有它的意见。所以问题是我想把它扩展到在 view_one_post.blade.php 视图中有 cmets。 所以我应该创建 CommentsController 但我不确定如何使用 CommentsController@index 列出 cmets 并且我不确定该方法应该返回什么视图,因为我在 view_one_post.blade.php 的同一帖子视图中使用 cmets? 我已经看到了这个问题的一些答案,但它与我的情况不符

【问题讨论】:

  • 欢迎来到 SO。您可以考虑为 cmets 和 View Composer 创建一个视图来为其提供数据,然后您可以在任何需要这些 cmets 的地方包含该 cmets 视图
  • 请您编辑您的问题并添加您的Postscontroller 方法的代码和刀片文件的代码。

标签: php laravel view model controller


【解决方案1】:

您应该能够使用 View Composer 实现此目的。您可以为 cmets 创建一个视图,该视图可以包含在任何其他视图中。 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 Docs - Views - View ComposersView::composer

Laravel 7.x Docs - Blade - Including Subviews@include

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 2016-02-06
    • 2018-09-05
    • 2015-03-16
    • 2018-02-11
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多