首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Yii框架制作像Quora那样的url插件?

如何使用Yii框架制作像Quora那样的url插件?
EN

Stack Overflow用户
提问于 2010-10-04 23:28:52
回答 3查看 2.9K关注 0票数 1

使用Quora让我想知道他们是如何做他们的slug的:quora.com/topics slugs,quora.com/questions slug或quora.com/usernames slug。

实际上,我正在开发一个使用yii框架的应用程序,我想拥有一个像quora一样的插件?

谢谢你们

EN

回答 3

Stack Overflow用户

发布于 2010-10-05 03:05:13

您也可以使用重写规则来执行此操作。在您的配置文件中有这样的规则:

代码语言:javascript
复制
'controller/<slug:[\w\-]+>'=>'controller/view',

将采用如下的URL:

代码语言:javascript
复制
controller/my-slug

它将重定向到控制器中的actionView(),并将slug ("my-slug")作为$_GET变量传入。使用重写规则,您现在调用$_GET'slug‘,它将从url返回"my-slug“。

我有一个"slug“行作为主键,因此我只需在actionView()中查询数据库中的$_ get 'slug‘,然后根据URL获得正确的记录。就像一种护身符。祝好运!

更新以去除控制器前缀除了使用slug之外,您可能还需要一个大表来跟踪所有url slug(以防止重复)。如果你有这个能力,那么你可以做一些不同的事情:

1重写onBeginRequest以在主块表上进行查找,以确定要调用哪个控制器。2.对SiteController中的单个ActionIndex使用主重写,并在该操作中在主表中查找slug,以确定将用户发送到哪个控制器/操作。重写规则将如下所示:

代码语言:javascript
复制
'<slug:[\w\-]+>'=>'site/index',
票数 2
EN

Stack Overflow用户

发布于 2010-10-04 23:35:32

  1. 可处理您想要使用的任何特殊字符(对于example)
  2. Remove,则为Umlauts留下的任何非字母数字字符)
  3. 可处理空白

类似这样的内容,例如:

代码语言:javascript
复制
function _getSlugFromName($name){
   return preg_replace('#[\s]+#','-',preg_replace('#[^\d\w -]*#','',str_replace(array('ä','ü','ö','ß'),array('ae','ue','oe','ss'),html_entity_decode(mb_strtolower(trim($name),'UTF-8'),ENT_COMPAT,'UTF-8'))));
}
票数 1
EN

Stack Overflow用户

发布于 2011-02-23 16:27:39

这可能会对你有所帮助:dburlmanager

提供基于数据库的动态URL规则。基于数据库的动态URL规则(漂亮的固定链接或友好的URL)

这些动态规则就像Wordpress的“漂亮的固定链接”或“友好的URL”。您不必在URL上包含控制器名称(或ID):此扩展可以处理请求URI并将其路由到正确的控制器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3856675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档