带有存储库的 Laravel View Composer 不工作;

Posted

技术标签:

【中文标题】带有存储库的 Laravel View Composer 不工作;【英文标题】:Laravel View Composer with Repository is not working; 【发布时间】:2021-11-02 01:47:39 【问题描述】:

我在 Laravel 项目中使用了包含城市和国家/地区的软件包。我设置了一个存储库模式来使用这些城市数据。我的计划是将城市数据发送到注册视图或我想要的任何其他视图。在此处的示例中,我想发送到 project.create 页面。我测试了存储库,当我查看控制器时,我可以将数据传递给视图并使用 dd() 打印它。这没有问题。现在我想通过 viewcomposer 将此数据发送到我想要的视图。

首先我写了一个ComposerServiceProvider.php文件如下

<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;

class ComposerServiceProvider extends ServiceProvider

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    
        View::composer(
            'project.create',
            'App\View\Composers\LocationComposer'
        );
    

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    
        //
    

然后我写了composer文件,如下:

<?php

namespace App\View\Composers;

use App\Repository\Eloquent\LocationRepository;
use Illuminate\View\View;

class LocationComposer

    /**
     * @var LocationRepository
     */
    public $locationlist;

    /**
     * LocationComposer constructor.
     * @param LocationRepository $locations
     * @return void
     */
    public function __construct(LocationRepository $locations)
    
        $this->locationlist = $locations->getAllCities();
    

    /**
     * Bind data to the view.
     *
     * @param  \Illuminate\View\View  $view
     * @return void
     */
    public function compose(View $view)
    
        $view->with('cities', $this->locationlist);

    
 

但是数据没有传递给我想要的视图。

this is the error i got

我尝试过并做过的事情: -我通过应用配置注册了composerserviceprovider。 -我跑了 php artisan config:clear -我尝试发送到其他视图欢迎,注册等。

我怀疑我没有将存储库正确地调用到作曲家中。

感谢您的帮助...

【问题讨论】:

什么确切不起作用?您尝试过什么来解决该错误? 数据不通过视图... 请通过编辑为您的问题添加所有说明。这也应该包含您解决问题的尝试 好吧,对不起,我以为我写了所有细节,我正在再次编辑它 【参考方案1】:

可能您没有将App\Providers\ComposerServiceProvider::class 添加到您的config/app.php 文件中。所有额外的服务提供者都需要添加到config/app.php文件的providers数组中。

【讨论】:

以上是关于带有存储库的 Laravel View Composer 不工作;的主要内容,如果未能解决你的问题,请参考以下文章

使用带有分页视图的 Laravel View Composers 共享数据不起作用

带有模拟存储库的 Nestjs 服务测试不起作用

带有本地存储库的 Spring Cloud Config Server 配置

带有单独存储库的 git-tf

来自官方设计库的带有 FloatingActionButton 的 InflateException

带有 git 存储库的 Maven 发布插件忽略 scm.user scm.password