2013-03-11 24 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

我已經收窄的問題倒在我的供應商文件夾壞的圖書館,雖然我不能肯定它是哪一個。我將我正確工作的供應商文件夾複製到我的破損文件夾中,一切開始正常。

我會更新這個答案,一旦我知道確切的問題是什麼。