Изменение индекса лезвия в выпуске laravel - PullRequest
1 голос
/ 01 мая 2020

У меня есть подписка на моем 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');
 })

Но даже если это сделал мой блейд-логин в качестве страницы индекса, каждый раз, когда я пытаюсь получить доступ к индексу как уже вошедший в систему пользователь, он перенаправляет меня на блейд-логин, а не на домашний блейд ....

Как я могу исправить этот вопрос?

1 Ответ

2 голосов
/ 01 мая 2020

Вы получаете эту ошибку:

$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');

This получит URL-адрес от / или /home и отправит его на HomeController@index.

Теперь, если ваш сайт не позволяет неаутентифицированному пользователю обвинять любой маршрут.

вам следует позвонить auth Промежуточное программное обеспечение в конструкторе контроллеров сделает ваш файл маршрута более читабельным

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

Это вызовет промежуточное программное обеспечение auth всякий раз, когда функция в этом контроллере называется

...