2016-09-14 4 views
0

У меня есть эта ошибка на моем веб-приложение:Класс «SocialWall/Controller/HomeController» не существует

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, и я только рефакторинга мой список контроллеров, как что:

Мое дерево:

  • корень/приложение/app.php
  • корень/приложение/routes.php
  • РОО т/SRC/Controller/HomeController.php
  • корень/веб/index.php

index.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(); 

routes.php

<?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'); 
//... 

HomeController.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"} 
    } 
} 

Что случилось?

[EDIT] OK Я исправлю это .. в route.php по второму аргументу функции, я заменил все '/' на '\'. Initialy PhpStorm подчеркивает меня все '\' в красном цвете, поэтому я заменил '\' на '/' .. Спасибо PhpStorm ...

+0

можете ли вы разместить свои файлы composer.json? – Matteo

ответ

0

Мои журналы (если это может помочь)

[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"} [] 

[EDIT] OK исправить это .. в маршрут .php по второму аргументу функции. Я заменяю все «/» на «\». . Первоначальный phpStorm подчеркивает «красный» цвет, поэтому я заменил «\» на «/». Спасибо phpStorm ...

0

вы указали неправильные имена:

namespace Controller; 

use Silex\Application; 
use Symfony\Component\HttpFoundation\Request; 
use SocialWall\Domain\Comment; 
use SocialWall\Form\Type\CommentType; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class HomeController extends Controller { 
    ... 

Кроме того, необходимо вывести контроллер.

EDIT # 2 Вы изменили свои маршруты тоже:

$app->get('/', "Controller/HomeController::indexAction")->bind('home'); 

// Detailed info about an article 
$app->match('/article/{id}', "Controller/HomeController::articleAction")->bind('article'); 

// Login form 
$app->get('/login', "Controller/HomeController::loginAction")->bind('login'); 
//... 
+0

Я пробовал это, но он все еще не работает. –

+0

Смотрите мой EDIT # 2. Кроме того, вы пробовали URL-адрес отладки, используя 'http: // host/app_dev.php/route', это дает немного больше информации об отладке, которая может помочь. –

+0

Такая же ошибка здесь, но с: Класс «Контроллер/HomeController» не существует. –