我从Silex开始,我无法将道路连接到控制器。我查看了几个示例和帖子,但是我阻止了,没有任何效果。
在我的index.php中
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
require_once __DIR__.'/../vendor/autoload.php';
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\ServiceControllerServiceProvider());
Request::enableHttpMethodParameterOverride();
$app->get("/", "Silex\Controllers\MainController::index");
$app->run();
在我的composer.json
中{
"require": {
"silex/silex": "~2.0",
"ddesrosiers/silex-annotation-provider": "dev-master"
},
"autoload": {
"psr-4": {
"Silex\\": "silex/"
}
}
}
我的控制员:
<?php
namespace Silex\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
public function index()
{
return new Response('Thank you for your feedback!', 201);
}
}
我不知道它是否重要,但我的项目的网址是“silex /".
你能告诉我这段代码有什么问题吗? 谢谢 !
答案 0 :(得分:2)
根据您的文件结构,Silex命名空间的路径应为&#34;&#34;
"autoload": {
"psr-4": {
"Silex\\": ""
}
}
最好不要使用此命名空间,因为它由silentx框架使用,由composer安装。您可以将其重命名为其他内容,例如App
。
"autoload": {
"psr-4": {
"App\\": ""
}
}
...
<?php
namespace App\Controllers;
use Silex\Application;
class MainController implements \Silex\ControllerProviderInterface {
...
$app->get("/", "App\Controllers\MainController::index");
答案 1 :(得分:0)
您正在使用silex 2.某些名称空间已更改。
而不是dogse man went to dogse dogsop
,您应该使用\Silex\ControllerProviderInterface