【问题标题】:how do I return data from controller to @include in Laravel?如何将数据从控制器返回到 Laravel 中的 @include?
【发布时间】:2020-07-29 12:04:46
【问题描述】:

我有一个名为 side.balde.php 的视图,它就像一个侧边栏。 使用 @include 将这一面调用到 home 和各种其他视图。

如果我只是在控制器中返回带有变量/数据的视图 side.balde.php,那么主视图将无法识别变量。

 return view('incs/side',compact('users','etc'));

我可以用主视图返回这个数据,主视图中的所有@includes 都可以继承这个数据。但问题是我在其他几个页面中使用了这个@include。

如何将数据转发到 side.balde.php,以便所有调用 side.balde.php 的视图都可以访问数据。

【问题讨论】:

  • 看看view composers。 (不确定'incs/side' 是否有效,compact('users''etc') 是否缺少逗号)
  • 我打错了代码,逗号不是问题。我不明白您发送的链接,这对我来说太复杂了。我什至没有文档中提到的一些文件和文件夹,例如 App\Repositories\UserRepository 和 app\Http\View\Composers。有人可以发送一个工作示例吗?
  • 我不想听起来很粗鲁,但是如果您不能根据您的特定需求调整代码示例,您将很难进行开发。抱歉,我帮不了你了,祝你好运

标签: php laravel include


【解决方案1】:

有 2 个选项可以跨多个视图共享数据:

  1. 应用服务提供者(简称) 打开你的应用服务提供者,在boot方法中写:

    $users = 用户::get(); 查看::share('users', $users); 现在您的所有视图都可以访问该密钥 users

  2. View Composers 请访问此链接以了解视图合成器的工作原理。

不过,您可以使用第一个选项完成工作。谢谢。

【讨论】:

  • 我之前尝试过第一种方法,认为它不起作用。我收到此错误“在 null 上调用成员函数 following()”。 following() 是 user.php 模型中声明的用户和关注者表之间的 belongsToMany 关系。知道如何在 AppServiceProvider 中访问以下内容吗?
  • 您可以使用with获取关系数据。喜欢User::with('following')->get();
【解决方案2】:

让它和它一起工作

public function boot()
    {

      View::composer('*', function ($view) {
        //code
        $view->with('users', $users);
        });

    }

顶部使用use App\User;use Illuminate\Support\Facades\View;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    相关资源
    最近更新 更多