我当前的网址如下:
www.hostname.com/get_city/
(此网址已通过使用路线缩短)
这里get_city
是我的方法名称,现在我想要的是 ...
1)从网址中删除控制器名称
2)从下拉列表中传递选定的城市值,并在网址中设置为参数
因此,必填网址为:www.hostname.com/california
或www.hostname.com/newjersey
注意:我知道如何使用路由但在这种情况下如何制作动态URL?! 请不要直接参考ellislab文档,因为我已经尝试过这些东西
答案 0 :(得分:0)
对于codeigniter中的动态路由:
尝试这样:
在routes.php文件中复制并粘贴这些代码:
require_once (BASEPATH . 'database/DB' . EXT);
require_once (BASEPATH . 'helpers/url_helper' . EXT);
require_once (BASEPATH . 'helpers/text_helper' . EXT);
$db = &DB();
$query = $db -> get('news');
$result = $query -> result(); //result return all records
foreach ($result as $row) {
$string = rawurlencode(str_replace(' ', '-', strtolower($row -> subject)));
$route[$string] = "controller/news_details/$row->id";
}
所以你可以用任何你想要的字符串来改变$ string。
然后尝试输入新的网址,看看路由可以正常工作。
注意:.htaccess文件必须删除url中的index.php
希望这有帮助。答案 1 :(得分:0)
您可以尝试使用方法“_remap”。
查看官方文档以获取有关该功能行为的更多信息:
http://www.codeigniter.com/user_guide/general/controllers.html
问候。
答案 2 :(得分:0)
您需要在application / config / routes.php
中配置路由在现有路线添加
之后$route['([a-z]+)'] = 'controller_name/method_name/$1';
但这会覆盖所有路线,在此路线之前,您需要为您的控制器声明所有路线
$route['product/:any'] = 'product/$1';
$route['catalog/:any'] = 'catalog/$1';
之后
// this route be used when previous routes is not suitables
$route['([a-z]+)'] = 'controller_name/method_name/$1';
DOCS:
http://code-igniter.ru/user_guide/general/routing.html
CI2:URI Routing
CI3:URI Routing