Je travaille sur un nouveau projet Silex et de la difficulté à monter je voie à mes fournisseurs de contrôleur. Je l' ai fait avec succès auparavant dans un autre projet, mais maintenant quand je mets les routes suivantes app.php
:
$app->mount('/', new CommonController());
$app->mount('/feeds', new FeedsController());
$app->mount('/admin', new AdminController());
Je reçois une erreur fatale: Fatal error: Call to undefined method Silex\Route::setPath() in [root]/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php on line 255
EDIT:
L'erreur ne soit pas levée lorsque je monte la route racine. Seulement quand j'ajoute /feeds
ou /admin
.
FIN EDIT
Je ne peux pas savoir où cela vient peut-être - je l'ai cherché mon autre projet de travail pour cette définition de la fonction, mais il est nulle part dans le code. Je pense que je pourrais être absent une bibliothèquecomposer.json
mais je ne suis pas sûr que l' on serait peut - être - le fichier est presque identique dans les deux projets:
TRAVAIL 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 BROKEN:
{
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]
}
}
}
Encore une fois, cela peut même pas être la cause de mon problème, juste mon sentiment. Quelqu'un peut-il déchiffrer ce qui se passe ici?
DEUXIÈME 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;
}
}