slim4-mod / auto-route-conn
Slim4-Mod 添加了 auto-route 和 connect-db 功能 - 使用 MVC 模式与 Twig 视图 - 集成 SlimAsset
Requires
- doctrine/orm: ^3.1
- glazilla/twig-asset: dev-master
- mnapoli/silly: dev-master
- monolog/monolog: ^3.6
- php-di/slim-bridge: ^3.4
- slim/csrf: ^1.4
- slim/psr7: ^1.6
- slim/slim: 4.*
- slim/twig-view: 3.x-dev
- symfony/cache: ^7.0
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