Вы должны быть в состоянии достичь этого с помощью View Composer. Вы можете создать представление для комментариев, которое может быть включено в любые другие представления. Представление 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
поставщика услуг вы можете прикрепить composer к вашему представлению:
View::composer('partials.commments', 'App\Composers\CommentsComposer');
Везде, где вы хотите использовать это представление, вы можете просто включить его в Blade:
@include('partials.comments')
Это позволяет вам иметь изолированное место для логики c обработки данных, которые необходим для этого частичного взгляда, и это нужно только беспокоиться об этой одной ответственности. В отличие от контроллера, Composer не нужно беспокоиться об обработке запроса или ответа.
Laravel 7.x Документы - Представления - Просмотр композиторов View::composer
Laravel 7.x Документы - Blade - включая подвиды @include