laravel 4 Метод Route :: controller() возвращает NotFoundHttpException

90
8

Я пытаюсь перейти на контроллер RESTful, используя следующее в app/routes.php:

Route::controller('register', 'RegisterController');

Route::get('/', 'HomeController@showWelcome');

В моем приложении/контроллерах/файле RegisterController.php я добавил следующее:

<?php

class RegisterController extends BaseController
{
public function getRegister()
{
return View::make('registration');
}

public function postRegister()
{
$data = Input::all();
$rules = array(
'first_name' => array('alpha', 'min:3'),
'last_name' => array('alpha', 'min:3'),
'company_name' => array('alpha_num'),
'phone_number' => 'regex:[0-9()\-]'
);
$validator = Validator::make($data, $rules);
if ($validator->passes()) {
return 'Data was saved.';
}
return Redirect::to('register')->withErrors($validator);
}
}

Я получаю следующую ошибку:

Symfony\Component\HttpKernel\Exception\NotFoundHttpException

Когда я запускаю маршруты php artisan в терминале, я получаю:

+--------+--------------------------------------------------+------+----------------------------+----------------+---------------+
| Domain | URI | Name | Action | Before Filters | After Filters |
+--------+--------------------------------------------------+------+----------------------------+----------------+---------------+
| | GET /register/register/{v1}/{v2}/{v3}/{v4}/{v5} | | Register@getRegister | | |
| | POST /register/register/{v1}/{v2}/{v3}/{v4}/{v5} | | Register@postRegister | | |
| | GET /register/{_missing} | | Register@missingMethod | | |
| | GET / | | HomeController@showWelcome | | |
+--------+--------------------------------------------------+------+----------------------------+----------------+---------------+

Я не понимаю, почему регистр дважды отображается в URI, а второе действие GET отсутствует и почему я получаю эту ошибку.

спросил(а) 2013-10-06T22:24:00+04:00 7 лет назад
1
Решение
99

Если вы используете API RESTful, наилучшим способом является ваш маршрут,

Route::resource('register', 'RegisterController');

И измените свою public function getRegister() на public function index() и public function postRegister() в public function store() public function postRegister() public function store()

Тогда index() может получить доступ, используя GET http://localhost/laravel/register и store() используя POST http://localhost/laravel/register

Chaneg http://localhost/laravel/ с вашим.

И так же, как update($id) используется для обновления и destroy($id), используется для удаления

ответил(а) 2013-10-06T22:31:00+04:00 7 лет назад
58

Route :: controller ('register', 'RegisterController');

Это также будет работать, если вы его измените


Маршрут :: контроллер ('/', 'RegisterController');

ответил(а) 2013-10-25T00:46:00+04:00 6 лет, 12 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема