目前,我的 Zend 应用程序使用 URL 路由:
example.com/news/12
选择 ID 为 12 的新闻在页面上显示。
但是客户只想使用文本,例如:
example.com/news/man-dies-after-burning-himself
有人知道怎么做吗?
目前,我的 Zend 应用程序使用 URL 路由:
example.com/news/12
选择 ID 为 12 的新闻在页面上显示。
但是客户只想使用文本,例如:
example.com/news/man-dies-after-burning-himself
有人知道怎么做吗?
有几种方法。如果没有您的代码,将很难解释,但我会试一试。首先,您可以通过一种方法来解决此问题,即使用名为friendlyUrl
(例如)的属性存储新闻,而不是通过 ID 选择新闻,而是通过 friendlyUrl 选择新闻,但是,您必须始终检查是否没有使用该friendlyUrl 存储的其他新闻。并且friendlyUrl 应该来自用函数解析的新闻标题,该函数删除url 中不允许的所有特殊字符并用“-”替换空格。另一种方法是 StackOverflow 的做法,例如,在 url 中使用 ID 和 TEXT:
如果您检查该 url,您将首先看到 id,然后是friendlyUrl 或friendlyName 或任何您想调用的名称。
在你的 module.config.php
'router' => array(
'routes' => array(
'news' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '[/:news][/:url][/]',
'constraints' => array(
'url' => '[a-zA-Z][a-zA-Z0-9_-]*',
),
'defaults' => array(
'__NAMESPACE__' => 'YourModule\Controller',
'controller' => 'News',
'action' => 'index',
),
),
),
),
),
如果您选择使用文本而不是 Id,则必须确保 url 是唯一的,否则您的应用程序将切断第一个匹配项。在您添加的示例中:
url = 'man-dies-after-burning-himself'
这将包括: