【发布时间】:2018-03-27 22:10:29
【问题描述】:
我是 Silex 框架的新用户,在向控制器注册路由时遇到了一个小问题(对我来说是个大问题)。 Silex 找不到我的控制器。 这是我的文件树:
我的 composer.json 文件:
{
"require": {
"silex/silex": "~1.3",
"twig/twig": "^1.24",
"doctrine/dbal": "~2.2"
},
"autoload": {
"psr-4": {
"Controller\\": "web/"
}
}
}
我的 index.php 文件在 web 目录中:
<?php
// web/index.php
require_once __DIR__.'/../vendor/autoload.php';
use Symfony\Component\HttpFoundation\Response;
use Silex\Provider\UrlGeneratorServiceProvider;
use Silex\Provider\ValidatorServiceProvider;
use Silex\Provider\ServiceControllerServiceProvider;
use Silex\Provider\HttpFragmentServiceProvider;
$app = new Silex\Application();
$app['debug']=TRUE;
$app->get('/','HomeController::index');
$app->run();
和HomeController.php文件:
<?php
/**
* Created by PhpStorm.
* User: Oskar
* Date: 2016-02-07
* Time: 02:27
*/
namespace web\Controller{
use Symfony\Component\HttpFoundation\Request;
use Silex\Application;
use Silex\ControllerCollection;
class HomeController
{
public function index()
{
return 'Hello Controller';
}
}
}
我的错误:
问候。
【问题讨论】:
-
您必须指定控制器的完整命名空间
-
我将命名空间更改为:命名空间 web\Controller\HomeController。我有同样的错误。
-
您误用了命名空间。您的控制器位于 Controller 命名空间中,并且您正在使用 web\Controller。查看您的作曲家 psr-4 密钥:
"Controller\\": "web/"您告诉作曲家在 web 文件夹中加载 Controller 命名空间,但您定义的是 web/Controller 命名空间.在您的控制器中,只需使用 Controller 命名空间 -
恕我直言,您不应该将控制器放在公共网络文件夹中,最好在网络和供应商目录的同一级别有一个 src 文件夹。跨度>
标签: php controller silex