我正在寻找一种在codeigniter中传递"GET"变量的方法,最终遇到了这样的: 链接文本
我想知道如何实现它.
例如 :
www.website.com/query会给我DB中的每个条目.
通常我会
www.website.com/query/?id=5获得相应的条目.
当我尝试CI方式时:
www.website.com/query/id/5
我收到404错误,因为它正在寻找一个名为id的类,但它无法找到它.
有没有办法一步一步地做到这一点?
谢谢.
使用Codeigniter开发人员预期的方法实现此目的的两种好方法.
如果您总是希望存在"id"参数,则可以利用在要调用的方法(函数)之后立即传递URI中的值的功能.
传递示例/[controller]/[method]/[value]:
http://www.website.com/query/index/5
Run Code Online (Sandbox Code Playgroud)
然后,您将访问"id"的值作为函数的预期参数.
Class Query extends Controller {
...
// From your URL I assume you have an index method in the Query controller.
function index($id = NULL)
{
// Show current ID value.
echo "ID is $id";
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果您希望除了ID之外还允许传递许多参数,则可以按任何顺序将所有参数作为key => value对添加到URI段.
传递示例/[controller]/[method]/[key1]/[val1]/[key2]/[val2]/[key3]/[val3]:
http://www.website.com/query/index/id/5/sort/date/highlight/term
Run Code Online (Sandbox Code Playgroud)
然后,您将uri_to_assoc($segment)使用URI类中的函数将第3段("id")中的所有URI段向前解析为key =>值对的数组.
Class Query extends Controller {
...
// From your code I assume you are calling an index method in the Query controller.
function index()
{
// Get parameters from URI.
// URI Class is initialized by the system automatically.
$data->params = $this->uri->uri_to_assoc(3);
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
这将使您可以轻松访问所有参数,它们可以按URI中的任何顺序排列,就像传统的查询字符串一样.
$data->params 现在将包含URI段的数组:
Array
(
[id] => 5
[sort] => date
[highlight] => term
)
Run Code Online (Sandbox Code Playgroud)
您还可以混合使用这些ID,其中ID作为预期参数传递,其他选项作为key => value对传递.当需要ID且其他参数都是可选的时,这是一个很好的选择.
传递示例/[controller]/[method]/[id]/[key1]/[val1]/[key2]/[val2]:
http://www.website.com/query/index/5/sort/date/highlight/term
Run Code Online (Sandbox Code Playgroud)
然后,您将uri_to_assoc($segment)使用URI类中的函数将第4段("sort")中的所有URI段向前解析为key =>值对的数组.
Class Query extends Controller {
...
// From your code I assume you are calling an index method in the Query controller.
function index($id = NULL)
{
// Show current ID value.
echo "ID is $id";
// Get parameters from URI.
// URI Class is initialized by the system automatically.
$data->params = $this->uri->uri_to_assoc(4);
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
$id将包含您的ID值,$data->params并包含您的URI段的数组:
| 归档时间: |
|
| 查看次数: |
3305 次 |
| 最近记录: |