craftsnippets / craft-named-routes
Craft CMS 命名路由插件
Requires
- craftcms/cms: ^5.0.0
This package is not auto-updated.
Last update: 2024-09-23 11:12:19 UTC
README
安装
要安装插件,请按照以下说明操作。
-
打开您的终端并转到您的 Craft 项目
cd /path/to/project
-
然后告诉 Composer 加载插件
composer require craftsnippets/craft-named-routes
-
在控制面板中,转到设置 → 插件,然后点击 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 制作。