Laravel 4显示了MethodNotAllowedHttpException

时间:2016-01-22 12:53:35

标签: php laravel routes

我在点击地址栏时收到此错误

我从数据库中获取数据并发送到视图,该视图效果很好,但是当我点击地址栏标签时它显示 Symfony \Component\HttpKernel\Exception\MethodNotAllowedHttpException 任何帮助对我来说都很棒......

在我的控制器中:

public function getpiece()
{  
    $reportno = $_POST['reportno'];
    $data     = DB::table('reportno')->where('reportno','=',$reportno)->get();


    if(empty($data)) {
        return \Redirect::to('dashboard/client/piece')
            ->with('status','error')
            ->with('message','Data Not  Available');
    } else {       
        return \View::make('dashboard.client.piecewisereport')
            ->with('data',$data);
    }
}

3 个答案:

答案 0 :(得分:1)

它不起作用,因为当您点击地址栏中的enter时,它会尝试使用GET代替POST,但它只找到了POST路线。 (路线::交)。

要解决此问题,请执行以下操作:

Route::any('getpiece','Controllers\Domain\Client\ClientController@getpiece');

然后我建议使用像

这样的东西
if (Request::isMethod('post'))
{
    //
}

if (Request::isMethod('get'))
{
    //
}

包装你的代码。有关详情,请参阅Request Information docs

另一种方法是直接从路由中解决Controller,如下所示:Laravel 4.2 Implicit Controllers

注意:这些文档链接指向Laravel 4.2。

答案 1 :(得分:0)

我注意到您的控制器方法名为getpost,但您访问的是$_POST变量。

如果不查看您的路由文件,我无法确定,但如果您的路由使用Route::get('routename'),那么它正在使用错误的HTTP方法。如果是这种情况,请尝试将其更改为Route::post('routename')

答案 2 :(得分:0)

从项目的根目录在终端中执行php artisan routes,它可以让您检查注册的路由是什么。

PS:仅供参考,如果是Laravel 5,则为php artisan route:list