codeigniter替代Get变量

sal*_*ane 3 codeigniter

我正在寻找一种在codeigniter中传递"GET"变量的方法,最终遇到了这样的: 链接文本

我想知道如何实现它.

例如 :

www.website.com/query会给我DB中的每个条目.

通常我会

www.website.com/query/?id=5获得相应的条目.

当我尝试CI方式时:

www.website.com/query/id/5

我收到404错误,因为它正在寻找一个名为id的类,但它无法找到它.

有没有办法一步一步地做到这一点?

谢谢.

Nex*_*Rex 6

使用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段的数组: