早上好,
在过去的几周里,我一直在使用Silex开发一个应用程序,昨晚我要么对我的代码进行了更改,要么更新了作为更新作曲家的一部分,但它不起作用.
我正在使用'Igorw\ConfigServiceProvider'来加载链接到我配置的控制器的路由.但是当我访问网页时,我收到错误消息:
InvalidArgumentException: Unable to find controller "controllers.admin:index".
我的文件如下
composer.json
{ "require": { "silex/silex": "1.2.*@dev", "igorw/config-service-provider": "1.2.*@dev", "symfony/yaml": "2.5.*@dev" }, "autoload": { "psr-4": { "Turtle\\Controllers\\": "src/turtle/controllers" } } }
配置/ routes.yml
config.routes: admin: pattern: /admin defaults: { _controller: 'controllers.admin:index' } method: GET
网络/ index.php文件
register (new ConfigServiceProvider(__DIR__ . "/../config/routes.yml")); foreach ($app["config.routes"] as $name => $route) { $app -> match($route["pattern"], $route["defaults"]["_controller"]) -> bind($name) -> method(isset($route["method"]) ? $route["method"] : "GET"); } // register the classes $app["controllers.admin"] = $app -> share(function($app) { return new AdminController($app); }); $app -> run();
SRC /龟/控制器/ AdminController.php
app = $app; } public function index (Request $request) { return "Hello World!"; } }
我检查了$ app变量,它包含一个实例化的AdminController类,但由于某种原因,系统正在正确地拾取控制器.我真的不明白发生了什么,只能把它归结为一个模糊的错误或更新.
有人可以对此有所了解吗?
谢谢,拉塞尔
我在Silex GitHub问题网站https://github.com/silexphp/Silex/issues/919上发布了这个问题并指出了问题.感谢Dave Marshall.
该网站/的index.php文件未注册的Silex ServerControllerServiceProvider.在系统中添加此功能后即可使用.更新的文件现在看起来像:
<?php require_once __DIR__ . '/../vendor/autoload.php'; use \Igorw\Silex\ConfigServiceProvider; use \Turtle\Controllers\AdminController; $app = new Silex\Application; $app["debug"] = true; $app->register(new Silex\Provider\ServiceControllerServiceProvider()); // load the routes $app -> register (new ConfigServiceProvider(__DIR__ . "/../config/routes.yml")); foreach ($app["config.routes"] as $name => $route) { $app -> match($route["pattern"], $route["defaults"]["_controller"]) -> bind($name) -> method(isset($route["method"]) ? $route["method"] : "GET"); } // register the classes $app["controllers.admin"] = $app -> share(function($app) { return new AdminController($app); }); $app -> run();
当我重新组织文件时,我必须无意中删除了该行.