2015-07-16 4 views
1

ребята, следуя инструкциям tuts для laravel, так как я установил Laravel 5, пара ошибок бросает.Laravel 5 Class 'App Http Controllers Category' не найден

Код

public function getIndex() { 
     return View::make('categories.index') 
      ->with('categories', Category::all()); 
    } 

Эта функция бросает две ошибки

Class 'App\Http\Controllers\Category' not found 
Class 'App\Http\Controllers\views' not found 

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

use view в начале файла, но он не находит вид. Может ли один, дайте мне знать, в каком каталоге эти файлы находится

Благодаря

ответ

1

Оба эти не в контроллерах. Класс View отличается от Illuminate, а другой, скорее всего, представляет собой модель класса, которую вы создали.

Когда вы используете новый класс в php-файле, вы должны указать его или use.

, как вы, скорее всего, сделать это для вашего класса категория»

use App\Category, который должен решить, что один.

Ваше мнение один лишь немного сложнее. Если вы используете IDE, где вы можете которые намного проще сделать, вам не нужно запоминать имя пространства имен/классов. Однако, если вам нет, вам нужно знать, какой из них использовать и когда его использовать. В этом случае вам нужно будет do:

use View это должно решить это.

Таким образом, в вашем контроллере выше декларации и ниже пространства имен вы должны поместить использование вызовов

<?php namespace App\Http\Controllers 

// I'm removing this because there is a way not to even have to use this... 
// use View; 
use App\Category; 

class YourController extends Controller { 
    ... 
} 

Как я уже говорил в моем комментарии есть лучший способ. Вы можете просто использовать вспомогательную функцию view(), чтобы вернуть представление так же, не делая вид, как вы это делаете.

Все, что вы должны изменить это:

return View::make('categories.index')->with('categories', Category::all()); 

в

return view('categories.index', ['categories' => Category::all()]); 
    or 
return view('categories.index')->with('categories',Category::all()) 

Удаляет путаницу портя классов.

+0

после применения вашего метода 'Призыва к неопределенному методу Illuminate \ View \ View :: сделать()' – Vikram

+0

Следуйте дальнейшие инструкции. Как я уже сказал, есть некоторые вопросы. Таким образом, это означает, что Фасад является правильным, но это не лучший способ сделать это. Я также отредактирую свой ответ, чтобы удалить другой, чтобы избежать путаницы. –

+0

Просто использовать «Просмотр» будет достаточно, если вы используете Facade. –

1

добавить следующее в верхней части файла чуть ниже namespace декларации,

use Illuminate\Support\Facades\View; 
use App\Category; 
+0

Не работает bro – Vikram

+1

где ваш класс 'Category' определен. Я предположил, что он определен в каталоге 'app' с' namespace App; ' –

+0

. Чем лучше вопрос, почему это не сработало ... какая ошибка у него получилась ... –

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