2010-08-06 98 views
0

我想要使用codeigniter URL路由来路由URL。 我想电子邮件重定向URL像codeigniter中的URL路由问题

  • /用户/编辑?到UserController中/ editemail
  • /用户/编辑?密码UserController中/ editpassword

我使用下面的行尝试routes.php在配置文件夹中

$route["users/edit?(email|password)"] = "userController/edit$1"; 

这显示页面未找到。我在猜测?正在被视为正则表达字符。我试图逃脱它,但也没有工作。

我不想将配置设置uri_protocol设置为PATH_INFO或QUERY_STRING,因为这只是我想设置的一个漂亮的URL,不会将任何操作传递给操作。

有人能帮我一下吗?

问候

回答

0

你应该逃避?这样,它应该工作。 (未测试)

$route["users/edit\?(email|password)"] = "userController/edit$1"; 

后来编辑

这按预期工作:

$route["users/edit(email|password)?"] = "userController/edit$1"; 

userController看起来像这样

<?php 

class UserController extends Controller { 

    function edit() 
    { 
     echo "general edit"; 
    } 

    function editemail() 
    { 
     echo "edit email!"; 
    } 

    function editpassword() 
    { 
     echo "edit password"; 
    } 
} 

路由器的工作原理是这样的:

  • 如果你去http://sitename/index.php/users/editemail你看editemail()行动。
  • 如果你去http://sitename/index.php/users/editpassword你看到editpassword()的动作。
  • 如果你去http://sitename/index.php/users/edit看到edit()动作(问号使得可选的电子邮件/密码字段,你可以在edit()行动
+0

@Bogdan做一些其他的事情 - 已经尝试过了,失败了奇迹。如果这与允许的URL字符有关,它没有任何地方,但它没有显示“URI已经禁止字符”消息,它显示“页面未找到” – vikmalhotra 2010-08-06 08:02:55

+0

我做了一个测试,现在作品。稍后检查编辑!:) – 2010-08-06 08:11:14

+0

@Bogdan - 我没有得到。你在以后的编辑中写的是不是应该用于诸如'users/editemail','users/editpassword'和'users/edit'这样的URL呢? URL中的问号在哪里?我在用户/编辑密码中遇到问题。 – vikmalhotra 2010-08-06 08:16:22