在Laravel中提交表单时的MethodNotAllowedHttpException

时间:2016-02-03 09:40:42

标签: php forms laravel

我正在尝试提交表单以更新tbl_pages列。所以要使用复选框更新特定列。以下是我的观点。

以下是视图的外观:

    {!!Form::open([
            'method' => 'patch',
            'route' => 'pages.update'
        ])!!} 

    <p>{!! Form::checkbox('pages[]', $page->id, false, array('class' => 'checkboxes')) !!}</p>

 {!!Form::submit('Move to Trash', array('class' => 'btn btn-default', 'name'=> 'movetrash'))!!}

{!!Form::close()!!}

PageController.php 中的 update()方法如下所示。

public function update(Request $request, $id)
    {

        if(Input::get('movetrash')) {
            $pagesarray = Input::get('pages'); //getting checkbox values from view
            if(!empty($pagesarray)){
                foreach($pagesarray as $pageid){
                    $page = Pages::where('id', $pageid) -> first();
                    $page -> active = 0;
                    $page -> save();
                }
                \Session::flash('movedtotrash', 'Pages has been successfully MOVED TO TRASH');
            } 
            return redirect()->route('pages');
        }

    }

这就是我的 routes.php 的样子:

Route::group(['middleware' => ['web'], 'prefix' => 'pages'], function () {
    //
    Route::get('trash', 'PagesController@trashpage');

    Route::get('movetotrash/{id}', 'PagesController@movetotrash');

    Route::get('restore/{id}', 'PagesController@restore');

    Route::get('trashmultiple', [
            'as' => 'pages.trashmultiple', 'uses' => 'PagesController@update'
    ]);

    Route::resource('', 'PagesController'); // here is the problem

});

在routes.php这里我觉得我无法定义 Route::resource('pages', 'PagesController');这样,即使我这样做,我也会收到此错误NotFoundHttpException in RouteCollection.php

我想这是我在FORM 'route' => 'pages.update'

中无法做到这一点的问题

任何解决方案都非常有用。

谢谢! (提前)

1 个答案:

答案 0 :(得分:0)

更新路由需要一个id。运行php artisan route:list以查看与更新关联的路由的URL(如果存在)。也可以使用Route::resource('/', 'PagesController');

 {!!Form::open([
        'method' => 'patch',
        'route' => [pages.update, $id]
    ])!!}