【问题标题】:Silex controller not found未找到 Silex 控制器
【发布时间】: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。我有同样的错误。
  • 尝试遵循此处指定的文档silex.sensiolabs.org/doc/organizing_controllers.html
  • 您误用了命名空间。您的控制器位于 Controller 命名空间中,并且您正在使用 web\Controller。查看您的作曲家 psr-4 密钥:"Controller\\": "web/" 您告诉作曲家在 web 文件夹中加载 Controller 命名空间,但您定义的是 web/Controller 命名空间.在您的控制器中,只需使用 Controller 命名空间
  • 恕我直言,您不应该将控制器放在公共网络文件夹中,最好在网络和供应商目录的同一级别有一个 src 文件夹。跨度>

标签: php controller silex


【解决方案1】:

嗨,你应该使用下面的行,我希望它会帮助你

use Silex\Api\ControllerProviderInterface;


 class HomeController implements ControllerProviderInterface {

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多