craftsnippets/craft-named-routes

Craft CMS 命名路由插件

3.0.0 2024-07-15 10:09 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:12:19 UTC


README

安装

要安装插件,请按照以下说明操作。

  1. 打开您的终端并转到您的 Craft 项目

     cd /path/to/project
    
  2. 然后告诉 Composer 加载插件

     composer require craftsnippets/craft-named-routes
    
  3. 在控制面板中,转到设置 → 插件,然后点击 Craft 命名路由的“安装”按钮。

用法

此插件允许您从 Twig 模板中获取在 config/routes.php 中设置的路线的 URL - 您将不再需要在您的标记中硬编码路线结构。

为了使用此插件,您需要为您的路线提供一个额外的 name 属性。以下是一个创建用户个人资料页面的路线示例

'users/<user_id:\d+>' => ['template' => 'pages/user', 'name' => 'userRoute'],

如您所见,我们给路线命名为 userRoute。要在 Twig 模板中获取路线的 URL,您需要使用 craft.namedRoutes.getUrl 函数。传递路线名称和数组或路线标记

{{craft.namedRoutes.getUrl('userRoute', {
	user_id: 11,
}) }}

这将输出类似于 "http://website.com/users/11" 的 URL。

以下是 craft.namedRoutes.getUrl 函数接收到的参数

  • 路线名称
  • 路线标记数组(可选 - 路线可以没有标记)
  • 可选参数决定是否通过正则表达式规则检查标记值,如果路线标记中提供了此类规则。默认:true

标记的正则表达式规则

函数的最后一个参数需要一些解释。如果路线标记提供了正则表达式规则(如 <user_id:\d+> - 仅接受数字),则插件默认情况下会抛出异常,如果提供的标记值不匹配此规则。可以通过将函数的第三个参数设置为 false 来覆盖此行为。

此用法的一个用例是为 redirectInput 提供网址,当在 前端添加条目 时,并且我们的条目使用自定义路线。新条目的属性可以在 redirectInput 中使用 - 例如,此 URL 将将 {id} 替换为添加的条目的 ID

{{redirectInput('http://website.com/some-entry/{id}')}}

因此,如果我们的路线如下所示

'some-entry/<entry_id:\d+>' => ['template' => 'pages/entry', 'name' => 'entryRoute'],

{id} 作为 entry_id 标记值传递将导致错误,因为字符串 {id} 不匹配仅接受数字的 \d+ 规则。这就是为什么在这种情况下需要将函数的第三个参数设置为 false 的原因。

{{redirectInput(craft.namedRoutes.getUrl('entryRoute', {
	entry_id: '{id}',
}, false) )}}

Craft CMS 路由文档

有关路线的更多信息,请参阅 Craft 文档

免责声明

Piotr Pogorzelski 提供

插件图标由 Law Xin Yi 制作。