【问题标题】:Changing the index blade in laravel issue在 laravel 问题中更改索引刀片
【发布时间】:2020-08-16 00:35:04
【问题描述】:

我的 laravel 中有关注 web.php

Route::get('/', function () {
        return view('home');
    })->middleware('auth');

    Route::get('/home', 'HomeController@index');

如果我的用户未登录,这会将我的用户重定向回登录页面,并且登录的用户将重定向到主页。

现在在我的家庭控制器索引函数中,我有以下代码,

public function index()
    {
        $get_customers = User::where('user_roles','=','customer')->get();
        $count_customers = $get_customers->count();

        $get_apps = Website::all();
        $count_apps = $get_apps->count();
        return view('home',compact('count_customers','count_apps'));
    }

当我每次登录后尝试访问我的主页时,我都会收到一条错误消息

$count_apps is undefined

但是,

当我在web.php 中使用以下路由而不是以前的路由时,主页没有错误并且可以正常工作

Route::get('/', function () {
     return view('auth.login');
 })

但是即使这使我的登录刀片成为索引页面,每次当我尝试以已登录用户的身份访问索引时,它都会不断将我重定向到登录刀片而不是他的主页刀片......

我该如何解决这个问题?

【问题讨论】:

    标签: php laravel laravel-5 routes laravel-6


    【解决方案1】:

    您收到此错误:

    $count_apps is undefined
    

    因为当你调用这条路线时:

     Route::get('/', function () {
        return view('home');
    })->middleware('auth');
    

    而且你没有发送必要的数据和视图,在这种情况下是$count_apps

    您应该删除对home view 的错误调用,并像这样定义它:

    Route::get('/{name}', array(
         'as' => 'home', 
         'uses' => 'HomeController@index')
        )->where('name', '(home)?')->middleware('auth');
    

    这将从//home获取url并将其发送到HomeController@index

    现在,如果您的网站不允许未经身份验证的用户访问任何路由。

    您应该在控制器的构造函数中调用 auth 中间件,这将使您的路由文件更具可读性

    class HomeController extends Controller
    {
        /**
         * Instantiate a new controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware('auth');
        }
    }
    

    每当调用此控制器中的函数时,这将调用 auth 中间件

    【讨论】:

      猜你喜欢
      • 2020-04-08
      • 2016-07-11
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2021-06-03
      • 2018-07-27
      • 2021-12-17
      • 2014-10-13
      相关资源
      最近更新 更多