Silex类不存在 - 控制器

时间:2016-12-15 13:36:31

标签: controller routing routes composer-php silex

我从Silex开始,我无法将道路连接到控制器。我查看了几个示例和帖子,但是我阻止了,没有任何效果。

目前我有这个: Code_error

在我的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 /".

你能告诉我这段代码有什么问题吗? 谢谢 !

2 个答案:

答案 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