【问题标题】:Is it possible to create Laravel Blade tags that can access Controller actions?是否可以创建可以访问控制器操作的 Laravel Blade 标签?
【发布时间】:2020-05-16 05:58:26
【问题描述】:

我想创建一个 Blade 标签,它可以输出像 Posts 这样的数据。
目前我正在使用返回 show.blade.php 视图的 PageController。
在这个视图中有一些自己创建的元素(文本、图像......),现在我有一个 Bloglist 元素。由于我已经在使用控制器和路由,我想创建一个刀片指令来处理这个问题。

例如:

@BlogList('$filter')
  //foreach with $posts 
@endBlogList

在这个标签之间应该有一个可用的$posts 变量,它由BlogController 返回。 $filter 也供 BlogController 过滤帖子。

【问题讨论】:

  • 这有点违背 Laravel 的 MVC 逻辑。视图由控制器返回,因此有一个访问控制器函数的.blade 指令似乎是多余的/倒退的​​;返回视图的控制器可以调用另一个控制器函数并将结果传递给视图,例如$blogList = app()->make('AnotherController')->generateList();,然后是return view('blog-list)->with('blogList', $blogList);。重新考虑您要完成的工作。

标签: php laravel laravel-blade


【解决方案1】:

试试这个:

@foreach($posts as $post)

<li>{{$post->title}}</li>

@endforeach

这假设您的控制器正在向您的视图发送 $posts。

祝你好运!

【讨论】:

  • 感谢您的回答!但问题是,对于这个 View/Route 负责的是 PageController 而不是 BlogController。我想使用 @BlogList('$filter') Blade 指令访问 BlogController。
  • 对不起,我误解了你的问题。我不认为视图可以访问控制器,它们只能使用控制器传递给它们的东西(虽然不确定,我也在学习 laravel)。您可以从视图访问控制器,但您必须为此使用 ajax 调用。这个链接是我在寻找“laravel 6 ajax call”时发现的第一个链接,你会发现很多关于如何实现它的信息:itsolutionstuff.com/post/… 另一种选择是在 PageController 中检索 $posts 并将其传递给视图。 ..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-25
相关资源
最近更新 更多