codex-team/kohana-aliases

此模块允许您为您的服务创建有用且美观的URL。

dev-master 2018-04-17 15:20 UTC

This package is not auto-updated.

Last update: 2024-09-15 03:13:48 UTC


README

此模块允许您为您的服务创建有用且美观的URL。

您不需要更多的/user/<id>/article/<id>路由指针。现在您可以使用简单的/donald/victory/pokemon-go等地址作为不同资源的地址。

用户指南

关于此HMVC功能的文章,请访问我们网站上的https://ifmo.su/alias-system

安装

首先,您需要将此模块复制到您的项目中。您可以下载此存储库,并将其文件放置在/modules目录中,或者将其作为子模块附加。

git submodule add https://github.com/codex-team/kohana-aliases modules/aliases

要启用模块,请将其推送到bootstrap.php中的Kohana::modules()数组。

Kohana::modules(array(
    'aliases' => MODPATH . 'aliases', // Aliases for URLs
    ...
));

定义项目实体

classes目录中创建一个名为Aliases的子目录,并包含一个名为Controller.php的文件。您可以复制classes/Kohana/Aliases/Controller.php

为您的网站实体创建常量并将它们添加到控制器映射中。

const ARTICLE   = 1;
const USER      = 2;
...

const MAP = array(
    self::ARTICLE   => 'Articles',
    self::USER      => 'Users',
    ...
);

这意味着实体ARTICLE将由名为Articles的控制器处理。

子控制器

别名模块建议您使用两种类型的子控制器

  • Index用于显示实体
  • Modify用于对它们执行任何其他操作
示例

如果您有一个User实体,则创建两个控制器

  1. 以显示通过uri /alice/bob的用户

Controller/Users/Index.php,操作为action_show

  1. 执行任何编辑,例如添加、删除。Uri:/my-great-article/edit/not-a-good-user/ban

Controller/Users/Modify.php,包含所有其他操作,例如action_editaction_banaction_delete

之后,您只需将别名创建和更新方法包含到您的逻辑中即可。

设置系统路由

如果您想为您的网站设置系统路由或阻止某些不应该作为别名使用的路由,请使用config/system-aliases.php文件。通过将它们添加到数组中,锁定任何数量的系统URI。

数据库

MySQL数据库迁移中的别名表迁移在migrations/Aliases.sql文件中。

创建新的别名

$alias         = Model_Aliases::generateUri($uri);
$resource_type = Aliases_Controller::ARTICLE;       // your own resource's type such as user, article, category and other
$resource_id   = 12345;

$article->uri = Model_Aliases::addAlias($alias, $resource_type, $resource_id);

更新别名

$resource_id   = $article->id;
$old_uri       = $article->uri;
$new_uri       = Model_Aliases::generateUri($uri);
$resource_type = Aliases_Controller::ARTICLE;

$article->uri = Model_Aliases::updateAlias($old_uri, $new_uri, $resource_type, $resource_id);

删除别名

$hash = Model_Aliases::createRawHash($route);

Model_Aliases::deleteAlias($hash);

数据库和缓存

您可以创建一个Model_DB_Aliases类并创建自己的函数来与数据库交互,例如使用缓存系统。

复制文件classes/Model/DB/Aliases.php并重写函数。

存储库

https://github.com/codex-team/kohana-aliases/

关于CodeX

我们是一个由俄罗斯圣彼得堡的IFMO学生和毕业生组成的小型Web开发爱好者团队。请随时通过team@ifmo.su给我们反馈。