slim4-mod/auto-route-conn

Slim4-Mod 添加了 auto-route 和 connect-db 功能 - 使用 MVC 模式与 Twig 视图 - 集成 SlimAsset

dev-master 2024-05-16 11:45 UTC

This package is auto-updated.

Last update: 2024-09-16 12:33:24 UTC


README

作者: Phi Hùng - vmkeyb908@gmail.com - (VN) 0974 471 724

Slim4-Mod 添加了 auto-route 和 connect-db 功能 - 使用 MVC 模式与 Twig 视图 - 集成 SlimAsset,它保留了 slim4 原始的结构目录但已经调整了一些模板文件。

添加和调整尽量最小化,以便您可以使用 slim4 如同其他常用的 MVC 框架。

特别: 每当用户输入一个 URL 时,它将动态加载路由。因此,系统将快速运行且内存消耗较少,因为它不需要执行未使用的 "init" 程序。

安装

composer require slim4-mod/auto-route-conn "dev-master"
用法

使用命令行工具自动创建新模型(NEW_MODEL)所需的文件结构。

new-model <tên_model_mới>

运行工具后,您可以在浏览器中输入 'localhost/newModel' 进行测试。

要使用 MVC 框架,您需要进行以下两个主要步骤:

  • 1- 前往 src/domain/NEW_MODEL 目录,并为 NEW_MODEL.php 文件设计额外的 ORM。

  • 2- 为 NEW_MODEL 创建相应的数据库表。

您不需要关心路由,只需为每个模型编写 action(前往 src/application/actions/NEW_MODEL 设计 action,每个 action 的路由设置将直接放在类中,如模板所示)并按以下约定命名。

  • 必备规则
    • 目录结构类似于 slim4 原始(请参考 Product 模板)
    • Product 的功能名称必须以大写字母开头,后面跟着 Action(例如:ListAction.php,RowAction.php,...)

测试: 您可以输入以下测试地址。

  • 列出所有 product 表

    • localhost/product/list
  • 查看具有 id=2 的一个产品(product)

    • localhost/product/row/2
  • 查看 product/index

    • localhost/product
  • 等等...

配置
  • 将其插入 \public\index.php

    • 声明额外的 use

      use \Invoker\CallableResolver as InvokerCallableResolver; use Slim\Interfaces\CallableResolverInterface;

    • 插入数据库连接:(在以下代码后)

      // 设置存储库 $repositories = require DIR . '/../app/repositories.php'; $repositories($containerBuilder);

       
       // Set up PDO and doctrine-entity
       $diConn = require __DIR__ . '/../app/di-conn.php';
       $diConn($containerBuilder);
      
      
      
    • 插入 DI-Bridge(不要使用 slim-bridge,因为它与参数 url 发生错误):(替换以下代码)

      // Instantiate the app //from... AppFactory::setContainer($container); //from... $app = AppFactory::create();

       
       $container->set(CallableResolverInterface::class, new InvokerCallableResolver($container)); //??
       $app = AppFactory::createFromContainer($container);
       $container->set(App::class, $app);
      
      
  • 修改 \App\Settings\route.php

    • 插入 auto-route:(在以下代码后)

    $app->options('/{routes:.*}', function (Request $request, Response $response) { // CORS Pre-Flight OPTIONS Request Handler return $response; });

    注意: 可以禁用原始的 $app->get(...) 并只使用以下配置中的 1 个路由。

     
     $autoController = require  '..\src\Base\AutoController.php';
     $aUri = explode('/',$_SERVER['REQUEST_URI'] . '/');
     $autoController($app, $aUri[1], $aUri[2]);
     
     
    

注意: 一些功能仍在设计中,因此需要大家的贡献。谢谢!

作者:Phi-Hùng - vmkeyb908@gmail.com - Readme v.1.0