Pracuji na novém projektu Silex a mám problémy s montáží cestu do mého poskytovatele Controller. Úspěšně jsem nedělal v jiném projektu, ale teď, když jsem dal tyto trasy v app.php
:
$app->mount('/', new CommonController());
$app->mount('/feeds', new FeedsController());
$app->mount('/admin', new AdminController());
Dostávám fatální chybu: Fatal error: Call to undefined method Silex\Route::setPath() in [root]/vendor/symfony/routing/Symfony/Component/Routing/RouteCollection.php on line 255
EDIT:
Chyba nedostane hodil, když jsem připojit kořenový trasu. Pouze tehdy, když přidám /feeds
nebo /admin
.
END EDIT
Nemůžu přijít na to, kde by to mohlo být přichází z - jsem hledal svou druhou pracovní projekt pro tuto definici funkce, ale je to nikde v kódu. Myslím, že bych mohl být chybějící knihovny v composer.json
, ale nejsem si jistý, který z nich by to mohlo být - soubor je téměř totožný v obou projektů:
PRACOVNÍ 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]
}
}
}
Opět platí, že to nemusí být ani hlavní příčinou mého problému, jen moje intuice. Může někdo rozluštit, co se tady děje?
DRUHÝ 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;
}
}