【问题标题】:MethodNotAllowedHttpException in submitting a form in Laravel在 Laravel 中提交表单时出现 MethodNotAllowedHttpException
【发布时间】:2016-02-03 09:40:41
【问题描述】:

我正在尝试提交一个表单来更新 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' =&gt; 'pages.update' 中这样做的问题

对此的任何解决方案都会非常有帮助。

谢谢! (提前)

【问题讨论】:

    标签: php forms laravel


    【解决方案1】:

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

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

    【讨论】:

    • 我将如何设置 $id?我从表单本身获得价值。复选框名称为“pages”
    • 在这种情况下,javascript 是您最好的选择(或 jQuery)。捕获 Ajax 请求并将 url 更改为相应的 id。
    • 我解决了我创建了一个子组并将属性分配给它。成功了!
    猜你喜欢
    • 2018-10-22
    • 2017-03-28
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2018-12-19
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多