dicr/php-oclib

用于将 Yii 类连接到 OpenCart 的库

安装: 28

依赖者: 0

建议者: 0

安全性: 0

星标: 0

分支: 0

类型:yii2-extension


README

Yii2 适配器允许通过实现函数的方式(除控制器外)使用 Yii 库在 OpenCart 中连接和使用 Yii 组件。

连接 Yii2 库

通过 composer 自动加载类,包括外部库和 system 文件夹中的类。

composer.json

"require": {
    "php": ">=7.2",
    "dicr/php-oclib": "~3.1.5",
},
"autoload": {
    "classmap": ["system/engine/", "system/library/"],
    "files": ["system/helper/general.php", "system/helper/json.php", "system/helper/utf8.php"]
},

配置

  • /config/local.php - 本地安装选项(协议、域名、密码、数据库)
  • /config/common.php - Yii 和 OpenCart 的通用配置,包含基本路径
  • /config/opencart.php - OpenCart 的通用配置,适用于 /admin 和 /catalog 应用
  • /config.php - OpenCart 的配置,适用于 /catalog 应用
  • /admin/config.php - OpenCart 的配置,适用于 /admin 应用
  • /config/yii.php - Yii 的通用配置
  • /config/yii.web.php - Yii 的 Web 配置
  • /config/yii.console.php - Yii 的 Console 配置

初始化

Yii 应用作为组件和服务的容器创建和使用,不使用 run,而 Web 控制器保留在 OpenCart 中。

/system/startup.php

// 删除 OpenCart 的自动加载器 // spl_autoload_register('library'); // spl_autoload_register('vendor'); // spl_autoload_extensions('.php');

// Подключаем авто-загрузчик Composer
require(__DIR__ . '/../vendor/autoload.php');

// константы YII_ENV и YII_DEBUG должны быть установлены до загрузки Yii
defined('YII_ENV') or define('YII_ENV', 'dev');
defined('YII_DEBUG') or define('YII_DEBUG', DEBUG);

// подключаем класс Yii
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

// создаем приложение Yii
new yii\web\Application(require(__DIR__ . '/../config/yii.web.php'));

路由

/.htaccess/admin/.htaccess
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css|pdf)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

URL 重写

为了使用 URL 重写,在 OpenCart 中添加标准的 preAction 控制器到 /index.php/admin/index.php

// Инициализация SEO ЧПУ и маршрутизации Yii
$controller->addPreAction(new Action('startup/url'));

在这种情况下,也会支持短路径

  • 代替 /index.php?route=catalog/product&product_id=123
  • 可以使用 /catalog/product?product_id=123

/catalog/controllers/startup/url.php 控制器中使用 oclib 控制器的继承

class ControllerStartupUrl extends ControllerCatalogStartupUrl {}

代理类

需要将 OpenCart 的类替换为目录 opencart 中的空类,这些空类继承自 dicr\oclib 的同名类。