2016-11-02 5 views
2

я начинаю создавать мое приложениеМогу ли я сделать это в laravel 5.2?

  1. Установка Laravel 5 с композитором
  2. PHP ремесленник мигрирует ---> ОК
  3. PHP ремесленник делают: Auth ---> ОК
  4. PHP ремесленник делают: контроллер > AboutController -> оК

Результат: у меня есть "Home" страница (защищенная страница требует аутентификации) и общественную страницу, "О"

Файл маршрута:

<?php 
    Route::get('/', function() { 
     return view('welcome'); 
    }); 
    Route::auth(); 
    Route::get('/about', '[email protected]'); 
    Route::get('/home', '[email protected]'); 
    .... 
?> 

О программе контроллера, как это:

<?php namespace App\Http\Controllers; use App\Http\Requests; use 
Illuminate\Http\Request; 

    class AboutController extends Controller { 

     public function __construct() { 

     } 

     public function index() { 
      return view('about'); 
     } 
    } 

Это мой about.blade.php файл:

@extends('layouts.app') 

@section('content') 
<div class="container"> 
    <div class="row"> 
     <div class="col-md-10 col-md-offset-1"> 
      <div class="panel panel-default"> 
       <div class="panel-heading">About</div> 

       <div class="panel-body"> 
        About page! 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
@endsection 

Когда я вышел из системы :
Все в порядке, и я могу получить доступ к странице About без проблем. Домашняя страница требует логина, приятно.

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

FatalErrorException в AliasLoader.php линий 63: Максимальная функция уровень вложенности «100» достиг, прерывания!

Если я поставил: $this->middleware('auth'); на странице About, это нормально, но я не хочу этого делать.


Я попытался все это:

<?php 
    ............ 
    //$this->middleware('auth'); 
    //$this->middleware('auth', ['only' => 'create']); 
    //$this->middleware('auth', ['only' => ['create', 'edit', 'destroy']]); 
    //$this->middleware('guest', ['except' => 'index']); 
    //$this->middleware('guest', ['except' => ['index', 'create']]); 
    //$this->middleware('guest'); 
    ........ 
?> 

Но проблема сохраняется.

Его выглядеть страница требует промежуточного программного, так, я сделал это:

<?php 
    namespace App\Http\Controllers; 
    use App\Http\Requests; 
    use Illuminate\Http\Request; 
    use Illuminate\Support\Facades\Auth; 

    class AboutController extends Controller { 

     public function __construct() { 
      if (Auth::check()) { 
       $this->middleware('auth'); 
      } 
      else { 
       $this->middleware('guest'); 
      } 
     } 

     public function index() { 
      return view('about'); 
     } 
    } 
?> 

В этом случае он работает нормально, так что я хочу знать, если мое решение хорошо, или, если я ошибаюсь.

+1

Возможный дубликат [Laravel 5.2 Создание объекта FatalErrorException в AliasLoader.php строке 63] (http://stackoverflow.com/questions/35819097/laravel-5-2-create- object-fatalerrorexception-in-aliasloader-php-line-63) –

+1

Хмм. Я просто попытался воспроизвести это в Laravel 5.3, но это сработало для меня. Как выглядит ваш файл 'resources/views/about.blade.php'?Фактически вам не нужны проверки промежуточного программного обеспечения в конструкторе (я имею в виду, что у вас определенно есть обходное решение), но они не должны быть ненужными в первую очередь –

ответ

Смежные вопросы