Я работаю над новым проектом 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;
}
}
Являются ли настройки, включенные в сломанный файл composer.json в вашем вопросе, единственной разницей между этим и рабочим? –
Можете ли вы показать нам свой FeedController, например, сокращенный, поэтому вы включаете только один маршрут? – Maerlyn
@ Adam-E файлы были скопированы точно так, как они существуют. – Matt