2013-09-05 4 views
1

Я очень новичок в структуре Laravel и пытаюсь загрузить простой контроллер в своем браузере, чтобы медленно повеселиться.Laravel Controller не работает

У меня есть файл, который под названием users.php внутри в Laravel/приложение/контроллеры/папки и это выглядит следующим образом:

class UsersController extends BaseController 
{ 
    public $restful = true; 

    public function action_index() 
    { 
     echo 'hi'; 
    } 
} 

В routes.php файл, у меня есть

Route::get('users', '[email protected]'); 

Но, когда я иду в

http://localhost:8888/laravel/public/users 

Я поздоровался с сообщением, которое говорит «ReflectionException Класс UsersController не существует»

enter image description here

Я не уверен, если это потому, что я не устанавливал расширение Mcrypt РНР. Но когда я проверил файл php.ini на MAMP, он сказал, что он включен. При вводе

which PHP 

В моем терминале он сказал/usr/bin/php. Таким образом, он может не использовать правильную версию PHP.

Я не совсем уверен, является ли это проблемой маршрутов или если это связано с отсутствием жизненного расширения PHP.

Спасибо!

ответ

3

Вы должны использовать :: метод контроллера маршрута ссылаться ваш контроллер:

Route::controller('test', 'TestController'); 

... и переименуйте файл (как упоминает криоэкстрактор) быть TestController.php.

Примечание. Если вы хотите использовать имя файла как test.php, вам необходимо будет использовать composer для обновления настроек автозагрузки.

Наконец, формат имен методов контроллера изменяется в Laravel 4, попробуйте переименовать метод

public function action_index() {} 

быть

public function getIndex() {} 

get представляет запрос HTTP GET ... то же самое применяется для post (HTTP POST) и any (GET или POST ..)

+0

Говорит, что команда не найдена. И что это из-за необходимости обновлять классы после введения новых? Почему именно Ларавель лучше, чем CodeIgniter? – Lance

+0

Извините, я ошибаюсь в обновлении классов после добавления новых. Это не применимо здесь. Я обновлю это. Вам все равно нужно изменить имена методов. – msturdy

+0

@Lance ваша проблема была с использованием Route :: get .. смотрите выше – msturdy

2

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

Таким образом, users.php должно быть UsersController.php. Теперь, когда я делаю это сам специально, я получаю сообщение об ошибке «Нет такого файла или каталога» в вызове include(), поэтому я не уверен, что это единственная причина вашей проблемы. Но это может быть началом.

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