php - "SocialWall/Controller/HomeController"类不存在

标签 php namespaces symfony silex

我的网络应用程序出现此错误:

InvalidArgumentException in ControllerResolver.php line 160: Class "SocialWall/Controller/HomeController" does not exist.

    in ControllerResolver.php line 160
    at ControllerResolver->createController('SocialWall/Controller/HomeController::indexAction') in ControllerResolver.php line 76
    at ControllerResolver->getController(object(Request)) in HttpKernel.php line 136
    at HttpKernel->handleRaw(object(Request), '1') in HttpKernel.php line 68
    at HttpKernel->handle(object(Request), '1', true) in Application.php line 496
    at Application->handle(object(Request)) in Application.php line 477
    at Application->run() in index.php line 16

我使用 Silex ~2.0,我刚刚重构了我的 Controller 列表:

我的树:
  • root/app/app.php
  • root/app/routes.php
  • root/src/Controller/HomeController.php
  • root/web/index.php

  • 索引.php :
    <?php
    /** Front controller */
    
    require_once __DIR__.'/../vendor/autoload.php';
    
    $app = new Silex\Application();
    
    require __DIR__.'/../app/config/dev.php';
    require __DIR__.'/../app/app.php';
    require __DIR__.'/../app/routes.php';
    
    $app->run();
    

    路由文件
        <?php
    
        // Home page
        $app->get('/', "SocialWall/Controller/HomeController::indexAction")->bind('home');
    
        // Detailed info about an article
        $app->match('/article/{id}', "SocialWall/Controller/HomeController::articleAction")->bind('article');
    
        // Login form
        $app->get('/login', "SocialWall/Controller/HomeController::loginAction")->bind('login');   
    //...
    

    家庭 Controller .php
        <?php
    
        namespace SocialWall\Controller;
    
        use Silex\Application;
        use Symfony\Component\HttpFoundation\Request;
        use SocialWall\Domain\Comment;
        use SocialWall\Form\Type\CommentType;
    
        class HomeController {
    
            /**
             * Home page controller.
             *
             * @param Application $app Silex application
             */
            public function indexAction(Application $app) {
                $articles = $app['dao.article']->findAll();
                return $app['twig']->render('index.html.twig', array('articles' => $articles));
            }
    //...
    

    我的 composer.json :
    {
        "require": {
            "silex/silex": "2.0.*",
            "doctrine/dbal": "2.5.*",
            "twig/twig": "1.24.*",
            "symfony/twig-bridge": "^3.1",
            "symfony/security": "^3.1",
            "symfony/form": "^3.1",
            "symfony/config": "^3.1",
            "symfony/translation": "^3.1",
            "twig/extensions": "^1.3",
            "symfony/validator": "^3.1",
            "sorien/silex-pimple-dumper": "~2.0"
        },
        "require-dev": {
            "phpunit/phpunit": "^5.5",
            "symfony/css-selector": "^3.1",
        "symfony/browser-kit": "^3.1",
        "monolog/monolog": "^1.21"
        },
        "autoload": {
            "psr-4": {"SocialWall\\": "src"}
        }
    }
    

    怎么了 ?

    [编辑]
    好的,我修复了它.. 在函数的第二个参数的 route.php 中,我已将所有的 '/' 替换为 '\'。
    最初 phpStorm 用红色给我所有的 '\' 下划线,所以我用 '/' 替换了 '\' .. 谢谢 phpStorm ...

    最佳答案

    我的日志(如果有帮助的话)

    [2016-09-15 10:03:12] SocialWall.INFO: Matched route "{route}". {"route":"home","route_parameters":{"_controller":"SocialWall/Controller/HomeController::indexAction","_route":"home"},"request_uri":"http://socialwall/","method":"GET"} []
    [2016-09-15 10:03:12] SocialWall.CRITICAL: InvalidArgumentException: Class "SocialWall/Controller/HomeController" does not exist. (uncaught exception) at /opt/lampp/htdocs/SocialWall/vendor/symfony/http-kernel/Controller/ControllerResolver.php line 160 {"exception":"[object] (InvalidArgumentException(code: 0): Class \"SocialWall/Controller/HomeController\" does not exist. at /opt/lampp/htdocs/SocialWall/vendor/symfony/http-kernel/Controller/ControllerResolver.php:160)"} []
    [2016-09-15 10:03:12] SocialWall.INFO: Matched route "{route}". {"route":"_wdt","route_parameters":{"_controller":"web_profiler.controller.profiler:toolbarAction","token":"b65c04","_route":"_wdt"},"request_uri":"http://socialwall/_profiler/wdt/b65c04","method":"GET"} []
    

    [编辑] 好的,我修复了它.. 在函数的第二个参数的 route.php 中,我已将所有的 '/' 替换为 '\'
    最初 phpStorm 用红色给我下划线 '\',所以我用 '/' 替换了 '\' .. 谢谢 phpStorm ...

    关于php - "SocialWall/Controller/HomeController"类不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39495017/

    相关文章:

    PHP如何使用 key 编码/解码文本?

    php - 如何使用 Zend_Db 添加多行?

    c# - Wix 和 XmlSerialization : Colon character is getting encrypted to x003A

    C++ 命名空间 ofstream 不会写

    php - 将变量发送到 Symfony 模板文件

    php - 应该在简单实体中测试什么(TDD)?

    php - WP_insert_post 还添加了一个菜单项

    javascript - 如何在 Chrome 扩展中使用 javascript 发出 POST 请求?

    ASP.NET 命名空间

    Symfony 2.0 KnpMenu 自定义模板