Laravel 5.1:MethodNotAllowedHttpException

时间:2015-11-08 22:26:38

标签: php database forms laravel-5.1

当我从Laravel中的表单发出请求以将其存储在数据库中时,它会抛出此错误: MethodNotAllowedHttpException

我无法理解我做错了什么,所以能帮助我吗?

这是我的表格:

<form method="POST" action="/admin/ajax/edit">
        {{ csrf_field() }}
        <div class="textEdit">
            <div class="marginizer"> 
                <textarea id="edit" name="edit"></textarea>
            </div>
        </div>
        <input type="submit">
    </form>

这是我的路线档案:

Route::get('admin/dashboard', 'Dashboard@index');
Route::get('admin/dashboard/{id}', 'Dashboard@show');
Route::get('admin/dashboard/edit/{site}', 'Edit@edit');
Route::get('admin', 'Dashboard@index');

// Register and Login routes...
Route::get('admin/login', 'Login@index');
Route::get('admin/register', 'Register@index');

// Authentication routes...
Route::get('auth/login', 'Auth\AuthController@getLogin');
Route::post('auth/login', 'Auth\AuthController@postLogin');
Route::get('auth/logout', 'Auth\AuthController@getLogout');

// Registration routes...
Route::get('auth/register', 'Auth\AuthController@getRegister');
Route::post('auth/register', 'Auth\AuthController@postRegister');

// Ajax routes
Route::post('admin/ajax/edit', 'EditAjax@store');

// UI routes
Route::get('/', 'ThemeLoader@index');
Route::get('/{site}', 'ThemeLoader@show');

Route::get('migrate', 'migrate@migrate');
Route::get('migrate/refresh', 'migrate@refresh');

这是我的控制器处理请求:

public function store(Request $request) {

    $content = new Content;

    $content->site = 'Index';
    $content->block = 1;
    $content->content = $request->input('edit');
    $content->active = 1;

    $content->save();
}

它实际上正确地将数据存储在数据库中,但它仍然会出现错误。

4 个答案:

答案 0 :(得分:1)

嗯,您是否通过php artisan route:list检查了路线? 有时当我弄乱路线时,我得到了MethodNotAllowedHttpException并且必须清除它的缓存。

kofi指出,

编辑。如果你的laravel项目目录不是htdocs的直接子项,那么这是可能的。因此,最好尝试{{ route('admin/ajax/edit') }}

答案 1 :(得分:0)

试试这个:

<form method="POST" action="{{ route('admin/ajax/edit') }}">

答案 2 :(得分:0)

MethodNotAllowedHttpException
通常在尝试对路由使用HTTP方法但未在路由文件中定义该方法时发生。例如,如果POST到方法,但只在routes.php中为路由定义GET方法。

答案 3 :(得分:0)

试试这段代码,我猜它可以帮到你:

<?php 
    {{ Form::open(array('action' => 'YourController@YourAction', 'method' => 'post')) }}
    {{ csrf_field() }}
        "..Your Form Inputs.."
    {{ Form::close() }}
?>