【问题标题】:PHP Slim 3 Framework - where can I put my controller file?PHP Slim 3 框架 - 我可以将控制器文件放在哪里?
【发布时间】:2017-06-14 10:31:31
【问题描述】:

我在容器中注册了一个控制器,但它似乎无法正常工作,因为它与正确的位置不匹配。

\slim\src\routes.php

<?php
// Routes
$app->get('/dd', 'App\controllers\HomeController:home');

\slim\App\controllers\HomeController.php

<?php
class HomeController 
{
   protected $container;

   // constructor receives container instance
   public function __construct(ContainerInterface $container) {
       $this->container = $container;
   }

   public function home($request, $response, $args) {
        // your code
        // to access items in the container... $this->container->get('');
        return $response;
   }

   public function contact($request, $response, $args) {
        // your code
        // to access items in the container... $this->container->get('');
        return $response;
   }
}

我的项目文件夹结构:

\slim
  \public
    index.php
    .htaccess

  \App
    \controllers
      HomeController.php

  \src
    dependencies.php
    middleware.php
    routes.php
    settings.php

  \templates
    index.phtml

  \vendor
    \slim

也许我应该设置 \slim\src\settings.php

因为它显示 Slim 应用程序错误:

类型:RuntimeException 消息:可调用 App\controllers\HomeController 不存在文件: D:\htdocs\slim\vendor\slim\slim\Slim\CallableResolver.php 行:90

最后,我还参考了这些文章: https://www.slimframework.com/docs/objects/router.html#container-resolution

PHP Slim 框架创建控制器 PHP Slim Framework Create Controller

如何在 Slim Framework 3 上创建中间件? How can i create middleware on Slim Framework 3?

【问题讨论】:

    标签: php frameworks slim-3


    【解决方案1】:

    将 psr-4 添加到您的作曲家文件中,以便您能够调用命名空间。

    {
        "require": {
            "slim/slim": "^3.12
        },
        "autoload": {
            "psr-4": {
                "App\\": "app"
            }
        }
    }
    

    此 PSR 描述了从文件路径自动加载类的规范。然后在你的 routes.php 文件的顶部添加这个:

    <?php
        use app\controllers\HomeController;
        // Routes
        $app->get('/dd', 'App\controllers\HomeController:home');
    

    最后在您的 HomeController.php 文件中添加:

    <?php
        namespace app\controllers;
        class HomeController 
        {
        //.. your code
        }
    

    希望这会有所帮助...:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-04
      • 2019-01-11
      • 2015-02-28
      • 2016-03-06
      • 2014-02-07
      • 1970-01-01
      • 2015-04-30
      • 2016-06-16
      相关资源
      最近更新 更多