如何使codeigniter用户配置文件的网址看起来很漂亮

时间:2014-01-02 20:49:54

标签: php codeigniter url-rewriting codeigniter-url codeigniter-routing

我正在尝试找出在codeigniter中制作漂亮外观网址的最佳方法。

通常情况下,我只想要一个带有第三个url参数(配置文件ID)的控制器,如下所示:

http://thesite.com/profile/4

==

这对我现在正在建设的网站不起作用,因为我想要一个带有公司名称的漂亮网址,如下所示:

http://thesite.com/profile/some-company-name

=======

他们有2个问题,也许我今天不想直接思考答案很明显,但如果网址是公司名称的连字版本,如果同一家公司的2个人在数据库中奇怪的原因,然后配置文件可能不是正确的,真正唯一的好方法是提供一个配置文件ID并通过id拉,但然后我的网址看起来不太好...

你会如何处理这种情况?我想我总是可以链接到/ profile / id然后在控制器中只查找配置文件并重定向到/ profile / company-name,但是那个进入该站点并键入/ profile / company-name的用户将得到404页。

对我来说有什么好主意吗?

3 个答案:

答案 0 :(得分:1)

使用php的urlencodeurldecode以及routing 在config

中添加route.php
$route['profile/(:any)'] = "controller_link/$1";

然后你可以在你的控制器文件上使用urldecode,如

public function controller_link($name=FALSE)
{
    if ($name != FALSE) {//check if name is passed 
        $queryname = urldecode($name);
        //then query on that name in the database
    }
}

如果不清楚则添加评论。

答案 1 :(得分:1)

只需查看指南,它就会显示 URL Helper

设置模型以处理您的getter / setter(用于配置文件名称)。 Getter获取要显示的正确内容,setter设置配置文件名称并处理重复项(通过添加1等同名;)。想想一种消除冲突的创造性方法,如果你不想要丑陋的东西,可以添加州名或邮编。

使用 url_title()来处理干净的网址并消除奇怪的字符:

$title = "What's wrong with CSS?";
$url_title = strtolower(url_title($title));
// Produces: whats-wrong-with-css

答案 2 :(得分:0)

在数据库中使用公司的唯一名称,按名称搜索公司,我使用此函数(帮助程序)来翻译slug中的名称。

if(!function_exists('slug')){
    function slug($text)
    {        
       // replace non letter or digits by -
       $text = preg_replace('~[^\\pL\d]+~u', '-', $text);

       // trim
       $text = trim($text, '-');

       // transliterate
       $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);

       // lowercase
       $text = strtolower($text);

       // remove unwanted characters
       $text = preg_replace('~[^-\w]+~', '', $text);

       return (!empty($text)) ? $text : FALSE ; 

       }
}