Model view controller 使用Laravel 5.5登录后传递共享变量

Model view controller 使用Laravel 5.5登录后传递共享变量,model-view-controller,laravel-5.5,Model View Controller,Laravel 5.5,我创建了一个方法,以便与应用程序的所有视图共享数据 为此,我创建了一个类EntityRepository,在其中存储我希望与所有视图共享的数据 这些数据显示在布局中,而不是视图中。 class EntityRepository { use App\Valuechain; public function getEntities() { $vcs = Valuechain::select('valuechains.id', 'lang_valuechain.

我创建了一个方法,以便与应用程序的所有视图共享数据

为此,我创建了一个类EntityRepository,在其中存储我希望与所有视图共享的数据

这些数据显示在布局中,而不是视图中。

class EntityRepository
{
    use App\Valuechain;

    public function getEntities()
    {
        $vcs = Valuechain::select('valuechains.id', 'lang_valuechain.vcname', 'lang_valuechain.vcshortname')
            ->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
            ->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
            ->where('langs.isMainlanguage', '=', '1')
            ->whereNull('valuechains.deleted_at')
            ->get();
        return $vcs;
    }
}
当我想向这些方法发送数据时,我只需调用getEntities()方法。。。例如:

public function index(EntityRepository $vcs)
{
    $entitiesLists = $vcs->getEntities();

    // My code here ...
    return view('admin.pages.maps.sectors.index', compact('entitiesLists', 'myVars'));
}
在这种特殊情况下,它工作正常,我没有问题。我的问题涉及登录后的登录页

在登录控制器中:

class EntityRepository
{
    use App\Valuechain;

    public function getEntities()
    {
        $vcs = Valuechain::select('valuechains.id', 'lang_valuechain.vcname', 'lang_valuechain.vcshortname')
            ->join('lang_valuechain', 'valuechains.id', '=', 'lang_valuechain.valuechain_id')
            ->join('langs', 'lang_valuechain.lang_id', '=', 'langs.id')
            ->where('langs.isMainlanguage', '=', '1')
            ->whereNull('valuechains.deleted_at')
            ->get();
        return $vcs;
    }
}
我这样定义了redirectTo变量:

public $redirectTo = '/admin/home';
出于特定原因,我必须重写LoginController中的authentificated()方法,以检查我的应用程序是否已配置或需要安装

protected function authenticated(Request $request, $user)
{

    $langCount = Lang::count();
    if ($langCount == 0) {
        return redirect()->to('admin/setup/lang');
    }
    else {
        //return redirect()->to('admin/home');
        return redirect()->action('BackOffice\StatsController@index');
    }
}
相关的index()方法正在将变量发送到视图:

public function index(EntityRepository $vcs)
{
    $entitiesLists = $vcs->getEntities();
    return view('admin.home', compact('entitiesLists'));
}
无论我报税多少,我都有错误信息


未定义变量:EntitiesList(视图:C:\wamp64\www\network dev\resources\views\admin\partials\header hor menu.blade.php)

我最终通过更改路由解决了这个问题:

Route::group(['prefix' => 'admin'], function () {
    Route::get('/', function (){
        $checkAuth = Auth::guard('admin')->user();           
        if ($checkAuth) {
            return redirect('/admin/main');
        }
        else {
            return redirect('admin/login');
        }
    });
});
在我的loginController中,我更改了:

public $redirectTo = '/admin/home';
致:

最后:

protected function authenticated(Request $request, $user)
{

    $langCount = Lang::count();

    if ($langCount == 0) {
        return redirect()->to('admin/setup/lang');
    }
    else {
        return redirect()->to('admin/main');
    }
}