atk14 / sluggish-router
为生成美观URL的 ATK14 路由器基类
v1.1.4
2024-02-27 11:52 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- atk14/dictionary: *
- atk14/string4: *
- atk14/tester: *
- mockery/mockery: 0.9
This package is auto-updated.
Last update: 2024-09-27 14:57:06 UTC
README
为生成美观URL的 ATK14 路由器基类
它可以处理具有方法 getSlug($lang)
和静态方法 GetInstanceBySlug($slug,&$lang)
的模型 "detail" URL。你可以在 Atk14Catalog 中找到这两个方法。
基本用法
路由器类
<?php
// file: config/routers/articles_router.php
class ArticlesRouter extends SluggishRouter {
var $patterns = [
"en" => ["index" => "/articles/", "detail" => "/articles/<slug>/"],
"cs" => ["index" => "/clanky/", "detail" => "/clanky/<slug>/"],
"sk" => ["index" => "/sk/clanky/", "detail" => "/sk/clanky/<slug>/"],
];
// var $model_class_name = "Article"; // by default determined automatically according to the router's class name
// var $target_controller_name = "articles"; // by default determined automatically according to the router's class name
}
加载路由器
<?php
// file: config/routers/load.php
Atk14Url::AddRouter("ArticlesRouter"); // the default namespace ("")
Atk14Url::AddRouter("blog","ArticlesRouter"); // loading ArticlesRouter also into namespace blog
在模板中
{a controller="articles" action="detail" id=123}Here is the article{/a}<br>
{a controller="articles" action="index"}Show all articles{/a}
渲染的HTML
<a href="/articles/why-is-the-atk14-so-cool/">Here is the article</a><br>
<a href="/articles/">Show all articles</a>
设置路由的更简单方法
<?php
// file: config/routers/articles_router.php
class ArticlesRouter extends SluggishRouter {
var $patterns = [
"en" => "articles", // same as ["index" => "/articles/", "detail" => "/articles/<slug>/"]
"cs" => "clanky", // same as ["index" => "/clanky/", "detail" => "/clanky/<slug>/"]
"sk" => "sk/clanky", // same as ["index" => "/sk/clanky/", "detail" => "/sk/clanky/<slug>/"]
];
}
仅设置详细路由
<?php
// file: config/routers/articles_router.php
class ArticlesRouter extends SluggishRouter {
var $patterns = [
"en" => "/articles/<slug>/", // same as ["detail" => "/articles/<slug>/"]
"cs" => "/clanky/<slug>/", // same as ["detail" => "/clanky/<slug>/"]
"sk" => "/sk/clanky/<slug>/", // same as ["detail" => "/sk/clanky/<slug>/"]
];
}
默认路由
可以使用星号符号指定所有未列出语言的默认路由。
<?php
// file: config/routers/articles_router.php
class ArticlesRouter extends SluggishRouter {
var $patterns = [
"*" => ["index" => "/<lang>/articles/", "detail" => "/<lang>/articles/<slug>/"],
];
}
安装
使用 Composer 安装 SluggishRouter。
cd path/to/your/project/
composer require atk14/sluggish-router
测试
composer update --dev
cd test
../vendor/bin/run_unit_tests
许可协议
SluggishRouter 是免费软件,遵循 MIT 许可协议 发行