如何在Laravel(IoC容器)中解决BadMethodCallExeption

时间:2014-06-13 21:00:05

标签: php laravel namespaces ioc-container

当我将Route::resource('api', 'ApiController');添加到 app / Http / routes.php 时,我收到此错误:

  

BadMethodCallException方法[index]不存在。

我的api控制器看起来像这样:

<?php

    class ApiController extends BaseController
    {     
        public function getIndex()
        {
           echo "No Access";
        }
        public function postIndex()
        {
            // content here ...
        }
        public function check_ban($user, $gameBit, $ip)
        {
            // content here ...
        }
        public function check_balance($userid, $gameid, $serverid)
        {
            // content here ...
        }
        public function purchase_item($xml)
        {
            // content here ...
        }
        public function LoginRequest($xml)
        {
            // content here ...
        }
        public function CurrencyRequest($xml)
        {
            // content here ...
        }
        public function ItemPurchaseRequest($xml)
        {
            // content here ...
        }
    }

我的api应该处理游戏登录请求,购买物品,禁止检查等,但我收到上述错误。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

当您使用以下内容宣布resourceful路线

Route::resource('api', 'ApiController');

然后让Laravel为您生成方法,然后转到command prompt/terminal并运行:

php artisan controller:make ApiController

这将在ApiController目录中创建一个app/controllers资源丰富的控制器,并创建所有方法(Method的骨架)。要确保哪个方法可以侦听哪个URIHTTP方法,请从php artisan routes运行command prompt/terminal,这样您就可以了解相关信息。详细了解Laravel网站上的resourceful controllers

如果您想针对HTTP谓词声明自己的方法,那么创建一个RESTful控制器并创建一个RESTful控制器,您不必运行任何artisan来自terminal的命令,但使用:

声明路线
Route::controller('api', 'ApiController');

然后创建前缀为HTTP动词的方法,以响应该动词,例如:

class ApiController extends BaseController {

    // URL: domain.com/api using GET HTTP method
    public function getIndex()
    {
        //...
    }

    // URL: domain.com/api/profile using POST HTTP method
    public function postProfile()
    {
        //...
    }

    // ...
}

如果您运行php artisan routes,那么您将能够看到所有URI和方法映射。查看Laravel网站上的RESTful controllers