2013-03-11 66 views
1

我正在开发一个新的Silex项目,并且无法将路线安装到我的控制器提供程序。我已经成功地在另一个项目中做过,但现在当我把下面的航线app.phpSilex 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

编辑:
的错误没有得到当我安装根路由时抛出。只有当我加入/feeds/admin
编辑完

我无法揣摩出这可能是来自哪里 - 我搜索了这个函数的定义我的其他工作项目,但它远不在代码中被发现。我想我可能在composer.json缺少一个库,但我不知道这可能是其中之一 - 该文件是在两个项目几乎相同:

WORKING 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] 
     } 
    } 
} 

“破” 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] 
     } 
    } 
} 

再次,这甚至可能不是我的问题,只是我的直觉的根本原因。任何人都可以破译这里发生了什么?

第二个编辑: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文件中包含的设置是否与此工作区别? – 2013-03-11 21:49:21

+0

例如,你可以告诉我们你的FeedController吗?缩短了,所以你只包含一条路线? – Maerlyn 2013-03-11 21:53:34

+0

@ Adam-E文件完全按照它们的存在进行复制。 – Matt 2013-03-12 13:08:54

回答

0

我已经收窄的问题倒在我的供应商文件夹坏的图书馆,虽然我不能肯定它是哪一个。我将我正确工作的供应商文件夹复制到我的破损文件夹中,一切开始正常。

我会更新这个答案,一旦我知道确切的问题是什么。