【问题标题】:laravel 4 Route::controller() method returns NotFoundHttpExceptionlaravel 4 Route::controller() 方法返回 NotFoundHttpException
【发布时间】:2013-10-13 07:46:32
【问题描述】:

我正在尝试使用 app/routes.php 中的以下内容路由到 RESTful 控制器:

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

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

在我的 app/controllers/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 routes 时,我得到:

+--------+--------------------------------------------------+------+----------------------------+----------------+---------------+
| 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 |                |               |
+--------+--------------------------------------------------+------+----------------------------+----------------+---------------+

我不明白为什么 register 在 URI 中显示两次,而第二个 GET 操作丢失,以及为什么我收到此错误。

【问题讨论】:

    标签: php controller laravel laravel-4


    【解决方案1】:

    如果您使用的是 RESTful API,最好的方法是在您的路由中,

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

    并将您的 public function getRegister() 更改为 public function index()public function postRegister() 更改为 public function store()

    然后可以使用GET http://localhost/laravel/register 访问index(),使用POST http://localhost/laravel/register 访问store()

    用你的 http://localhost/laravel/ 更改。

    同样update($id) 用于更新,destroy($id) 用于删除

    【讨论】:

    【解决方案2】:

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

    如果你改变它也可以工作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-06
      • 2013-08-17
      • 1970-01-01
      • 2014-06-23
      • 2015-01-09
      • 2020-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多