Ошибка класса 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
Ответы
Ответ 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, даже если вы решили использовать вспомогательную функцию.