【问题标题】:How to resolve BadMethodCallExeption in Laravel (IoC Container)如何解决 Laravel(IoC 容器)中的 BadMethodCallExeption
【发布时间】:2014-08-04 12:15:23
【问题描述】:

当我将 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 应该处理游戏登录请求、购买物品、禁止检查等,但我收到上述错误。

请问如何解决?

【问题讨论】:

    标签: php laravel namespaces ioc-container


    【解决方案1】:

    当您使用以下声明 resourceful 路由时

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

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

    php artisan controller:make ApiController
    

    这将在app/controllers 目录中创建一个ApiController 资源控制器,并且将创建所有方法(方法的骨架)。要确定哪个方法监听哪个URI 和HTTP 方法,请从command prompt/terminal 运行php artisan routes,这样你就会明白了。在Laravel 网站上阅读有关resourceful controllers 的更多信息。

    如果您想针对HTTP 动词声明自己的方法,则创建一个RESTful 控制器并创建一个RESTful 控制器,您不必从artisan 运行任何artisan 命令,但声明路线使用:

    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,那么您将能够看到所有URIs 和方法映射。在Laravel 网站上查看RESTful controllers。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多