2013-03-11 5 views
1

Я работаю над новым проектом Silex, и у меня возникли проблемы с установкой маршрута к моим поставщикам контроллеров. Я успешно делал это раньше в другом проекте, но теперь, когда я ставлю следующие маршруты в app.php:Silex Route :: setPath() не найден

$app->mount('/', new CommonController()); 
$app->mount('/feeds', new FeedsController()); 
$app->mount('/admin', new AdminController()); 

Я получаю фатальную ошибку: Fatal error: Call to undefined method Silex\Route::setPath() in [root]/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php on line 255

EDIT:
Ошибка не получит когда я монтирую корневой маршрут. Только когда я добавляю /feeds или /admin.
END EDIT

Я не могу понять, где это может приходить от - я искал другой мой рабочий проект этого определения функции, но нигде не найти в коде. Я думаю, что, возможно, отсутствует библиотека в composer.json, но я не уверен, какой она может быть - файл почти идентичен по обоим проектам:

РАБОТА composer.json:

{ 
    "name"  : "lyrixx/Silex-Kitchen-Edition", 
    "type"  : "library", 
    "description" : "A Silex Edition. This project is a base for your silex applications.", 
    "keywords" : ["framework"], 
    "homepage" : "http://lyrixx.github.com/Silex-Kitchen-Edition/", 
    "license"  : "MIT", 
    "authors"  : [ 
     { 
      "name" : "Grégoire Pineau", 
      "email" : "[email protected]" 
     } 
    ], 
    "repositories": [ 
     { 
      "type": "package", 
      "package": { 
       "name" : "twitter/bootstrap", 
       "version" : "2.0.4", 
       "source" : { 
        "url"  : "https://github.com/twitter/bootstrap.git", 
        "type"  : "git", 
        "reference" : "v2.0.4" 
       } 
      } 
     } 
    ], 
    "require": { 
     "php"      : ">=5.3.3", 
     "silex/silex"    : "dev-master", 
     "twig/twig"    : "1.*", 
     "monolog/monolog"   : "1.0.*", 
     "symfony/form"   : "2.1.*", 
     "symfony/translation"  : "2.1.*", 
     "symfony/twig-bridge"  : "2.1.*", 
     "symfony/validator"  : "2.1.*", 
     "symfony/yaml"   : "2.1.*", 
     "symfony/config"   : "2.1.*", 
     "kriswallsmith/assetic" : "1.0.*", 
     "twitter/bootstrap"  : "2.0.4", 
     "doctrine/dbal"   : "2.2.*", 
     "symfony/security"  : "2.1.*", 
     "fate/silex-extensions" : "dev-master", 
     "michelf/php-markdown" : "1.3.*@dev", 
     "swiftmailer/swiftmailer" : ">=4.1.2,<4.2-dev" 
    }, 
    "require-dev": { 
     "symfony/dom-crawler" : "2.1.*", 
     "symfony/css-selector" : "2.1.*", 
     "symfony/browser-kit" : "2.1.*" 
    }, 
    "minimum-stability" : "dev", 
    "scripts": { 
     "post-install-cmd": "Lx\\Composer\\Script::postInstall" 
    }, 
    "autoload": { 
     "psr-0": { 
      [autoload routes defined here] 
     } 
    } 
} 

«Broken» composer.json:

{ 
    "require": { 
     "php"      : ">=5.3.3", 
     "silex/silex"    : "dev-master", 
     "twig/twig"    : "1.*", 
     "monolog/monolog"   : "1.0.*", 
     "symfony/form"   : "2.1.*", 
     "symfony/translation"  : "2.1.*", 
     "symfony/twig-bridge"  : "2.1.*", 
     "symfony/validator"  : "2.1.*", 
     "symfony/yaml"   : "2.1.*", 
     "symfony/config"   : "2.1.*", 
     "kriswallsmith/assetic" : "1.0.*", 
     "twitter/bootstrap"  : "2.0.*", 
     "doctrine/dbal"   : "2.2.*", 
     "fate/silex-extensions" : "dev-master", 
     "swiftmailer/swiftmailer" : ">=4.1.2,<4.2-dev" 
    }, 
    "autoload": { 
     "psr-0": { 
      [autoload routes defined here] 
     } 
    } 
} 

Опять же, это не может даже быть причиной моего вопроса, только мое чувство кишки. Может ли кто-нибудь расшифровать то, что здесь происходит?

ВТОРОЙ EDIT: FeedsController.php

<?php 

namespace Controllers; 

use Controllers\CommonController; 
use Silex\Application; 
use Symfony\Component\HttpFoundation\Request; 

class FeedsController extends CommonController 
{ 

    public function connect(Application $app) 
    { 
     $controller = $app['controllers_factory']; 

     $controller->get('/', function (Request $request, Application $app) 
     { 
      return 'Yay!'; 
     }); 

     return $controller; 
    } 
} 
+0

Являются ли настройки, включенные в сломанный файл composer.json в вашем вопросе, единственной разницей между этим и рабочим? –

+0

Можете ли вы показать нам свой FeedController, например, сокращенный, поэтому вы включаете только один маршрут? – Maerlyn

+0

@ Adam-E файлы были скопированы точно так, как они существуют. – Matt

ответ

0

Я сузил проблему вплоть до плохой библиотеки в моей папке продавцов, хотя я не могу быть уверен, какой он есть. Я скопировал папку с правильно работающими поставщиками на мой сломанный, и все начало работать.

Я обновлю этот ответ, когда узнаю, в чем проблема.