atk14/sluggish-router

为生成美观URL的 ATK14 路由器基类

v1.1.4 2024-02-27 11:52 UTC

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 许可协议 发行