Laravel 4.2中的MethodNotAllowedHttpException

时间:2014-12-04 07:26:05

标签: php laravel laravel-4 laravel-routing

您好,在我的登录页面中,我忘记了密码链接。从那里我必须将重置密码链接发送给用户。我希望我做的一切都正确,但我仍然得到“MethodNotAllowedHttpException”错误。

HTML代码

<form action="/user/sendresetlink" method="post" id="forgot_password_form" name="forgot_password_form">

    <label for="name" class="col-xs-4 control-label">User Name</label>
    <input type="text" id="user_name" name="user_name" class="form-control"  />

    <button type="submit" class="btn bg-olive btn-block">Send</button>

</form>

路由器代码

Route::resource('user', 'UserController');

这里我提到了UserController的资源,其中laravel负责基本的CRUD路由。

Route::get('login', 'UserController@create');

Route::post('/user/store','UserController@store');

Route::get('logout', 'UserController@destroy');

Route::get('forgot_password','UserController@forgotPassword');

Route::post('sendresetlink','UserController@sendResetLink');

我已经提到sendresetlink作为post并调用控制器。它甚至没有去控制器。

Route::group(array('before' => 'auth'), function()
{
    Route::get('/jobs', 'JobsController@jobs_list');
});

控制器代码

public function sendResetLink()
{
    $form_data = Input::all();
    echo '<PRE>';
    print_r($form_data);
    exit;
}

我在这里做错了什么?我错过了什么吗?

注意:我在另一台机器上安装了laravel,并将代码复制到当前机器上。可能是因为这个,我的php工匠不工作。当我在命令提示符下尝试php artisan时,它声明'php'不被识别为任何内部外部命令。我试图在php.exe文件夹中安装composer。即便如此也没用。

2 个答案:

答案 0 :(得分:1)

在app / routes.php你写了

Route::post('sendresetlink','UserController@sendResetLink');

在表单操作中你有

<form action="/user/sendresetlink" method="post" id="forgot_password_form" name="forgot_password_form">

您可以通过将app / routes.php更改为

来解决此问题
Route::post('user/sendresetlink','UserController@sendResetLink');

您的路线和表单操作之间存在错过的匹配。 / user / sendresetlink和sendresetlink。

答案 1 :(得分:1)

替换

Route::post('sendresetlink','UserController@sendResetLink');

使用

Route::post('/user/sendresetlink','UserController@sendResetLink');

它会正常工作。

<强>解释

您的表单action<form action="/user/sendresetlink" ...

同样应该与URL的{​​{1}}参数匹配,如上所示。