代码之家  ›  专栏  ›  技术社区  ›  Recency

由于不是类或有效的容器条目,导致Slim应用程序错误

  •  0
  • Recency  · 技术社区  · 8 年前

    我正在尝试使用slim框架构建网站,但我遇到以下错误:“无法调用Store\HomeController上的索引,因为它既不是类,也不是有效的容器条目。”我彻底检查了拼写和标点符号错误,没有发现任何错误。错误转到以下代码的“callableResover.php”文件的第98行:

    throw new NotCallableException(sprintf(
        'Cannot call %s on %s because it is not a class nor a valid container entry',
        $callable[1],
        $callable[0]
    ));
    

    这是家庭控制器。我创建的php文件如下所示: 命名空间存储\控制器;

    class HomeController{
      public function index(){
        echo('Index');
    
      }//end function index
    
    }//end class
    

    这就是路线。php文件的代码如下:

    $app->get('/', ['Store\HomeController', 'index'])->setName('home');
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   micster    8 年前

    假设在将HomeController文件用于 route.php 文件,请尝试:

    1、添加 \ 到路由定义中控制器的命名空间

    \Store\HomeController
    

    2、改走这条路线

    $app->get('/', \Store\HomeController::class . ':index');
    

    查看Slim文档以了解更多信息 container resolution

        2
  •  1
  •   WhipsterCZ    4 年前

    我发现了一个问题。。 该类可能已注册 /vendor/composer/autoload_classmap.php

    所以你必须用命令重新生成它 composer dump-autoload

    它应该会起作用。。。