Подтвердить что ты не робот

Ошибка класса App/Http/Controllers/View Not Found

Я новичок в laravel 5 и в настоящее время в тупике от этой ошибки:

FatalErrorException in TicketController.php line 18: Class 'App\Http\Controllers\View' not found

Странно, что вид действительно существует, я проверил, действительно ли маршрут действительно направляется на правый контроллер, и это было, ошибка появляется, когда я пытаюсь это сделать:

return View::make('tickets.bus.index');

Это либо я что-то ошибаюсь, либо если реализация отличается от laravel 4

4b9b3361

Ответ 1

Проблема заключается не в фактическом представлении, а в классе View. Вы видите, когда вы просто ссылаетесь на класс типа View::make('tickets.bus.index') PHP ищет класс в текущем пространстве имен.

В этом случае App\Http\Controllers. Однако класс View явно не существует в вашем пространстве имен для контроллеров, а скорее в пространстве имен фреймов Laravel. Он также имеет псевдоним в глобальном пространстве имен.

Вы можете ссылаться на псевдоним в корневом пространстве имен, добавив обратную косую черту:

return \View::make('tickets.bus.index');

Или добавьте оператор импорта вверху:

use View;

Ответ 2

В Laravel 5.1 правильный код use:

use Illuminate\Support\Facades\View;

Ответ 3

Существует вспомогательная функция view(), которая находится в глобальном пространстве имен и может использоваться для упрощения синтаксиса:

return view('tickets.bus.index');

С помощью этого метода нет необходимости включать use View; или включать корневое пространство имен, например, \View.

Понятия, которые объясняет лукасгейтер, необходимы для понимания Laravel, даже если вы решили использовать вспомогательную функцию.

Ответ 4

Для меня это была проблема пространства имен. Я использовал php artisan для создания контроллера, но похоже, что php artisan использовал другое пространство имен (возможно, мне нужно что-то изменить в composer.json, чтобы исправить его, но я совершенно новый в laravel)

Whoops, looks like something went wrong. FatalErrorException in PagesController.php line 11: Class 'App\Http\Controllers\Controller' not found Хорошо, что я использую phpStorm, который автоматически вставил правильное пространство имен

убедитесь, что вы правильно проверяете пространство имен. Вот как я создал контроллер с помощью php artisan

    namespace App\Http\Controllers;
    use App\Http\Requests;
    use App\Http\Controllers\Controller; //php artisan inserted.
    class PagesController extends Controller
    {
        public function index(){
            return view('index');
        }
        public function about(){
            return view('pages.about');
        }
    }

, и это то, как phpstorm, добавленный после того, как я написал вручную, расширяет контроллер

    namespace App\Http\Controllers;
    use App\Http\Requests;
    use Illuminate\Routing\Controller; //I manually wrote extends Controller and selected this namespace 

    class PagesController extends Controller
    {
        public function index(){

     ...

Ответ 5

Существует вспомогательная функция, view(), которая находится в глобальном пространстве имен и может использоваться для упрощения синтаксиса:

return view ('tickets.bus.index');

With this method, it is unnecessary to include use View; or include the root namespace, e.g., \View.

Понятия, которые объясняет лукасгейтер, необходимы для понимания Laravel, даже если вы решили использовать вспомогательную функцию.