如何通过从URL请求多个变量笨?(How to pass multiple variables fr

2019-09-02 04:45发布

对于我的网站上每一个用户,他们有一个文章列表自己的个人资料页面。 当用户点击列表中的项目之一,动画会发生,然后一个AJAX调用会弹出一个显示的文章一个div。 与此同时,我用一些javascript来强制URL变化来反映这一点:

http://www.example.com/UserName/Hello-World-Article

当用户点击浏览器中的后退按钮,它调用javascript函数动画回到列表视图状态。

到现在为止还挺好。 但是,假设用户输入上述网址到他们的地址栏按下回车,这里的问题:

我如何通过“用户名”和“你好,世界第三”变量纳入笨并在这方面正确地使用它们?

Answer 1:

对不起,我是你的问题的措辞混淆一点点,但我想我明白你想谈什么。

第一:阅读对控制器文档 。 笨文档的岩石。

第二:URI的被直接路由到控制器类名称及其功能。

例如:

<?php

    class Profile extends CI_Controller {

        function item($username = NULL, $title = NULL)
        {
            if (is_null($username) || is_null($title)) redirect(base_url());

            // blah run code where $username and $title = URI segement
        }

     }

这将产生以下网址:

 http://www.example.com/profile/item/username/whatever-i-want

然后你可以使用的application / config / routes.php文件(路径删除项目文档 ):

 $route['(:any)'] = 'profile/item/$1';

更好的办法,但(预读):

 $route['profile/(:any)'] = 'profile/item/$1';

最后,这将创造你正在寻找的网址:

http://www.example.com/username/whatever-i-want

//http://www.example.com/profile/username/whatever-i-want

我可能需要仔细检查这个语法错误,但它的笨路由是如何工作的基本知识。 一旦你的网址是设置这样的,你可以做你希望它与你的JS什么的。

然而 ,我强烈反对这种方法,因为路由一类像这样将几乎呈现应用程序/网站无用的其余部分,除非这是你唯一的控制器/功能(可能并非如此),你有。 我认为你将与刚刚在URL这样或那样有一个类名更好。

或者,你也可以只是如果你想跳过以非传统的方式使用路由指数()和$这个 - > URI->段()像这样。

<?php

class Profile extends CI_Controller {

    function index()
    {
        $username = $this->uri->segment(1);
        $title = $this->uri->segement(2);
    }
}

我们希望,这是有道理的,并帮助你解决问题。



Answer 2:

怎么样发送只有一个参数是分隔符分隔

url = http://www.example.com/UserName_title

然后在你的控制器刚刚爆炸的参数

class Profile extends CI_Controller {

    function item($param = "")
    {
        if ( $param == ""){ return false; }

        $param = explode('_', $param);
        $username = $param[0];
        $title = $param[1];
    }
 }

有趣的部分是,只要你想,而不必去的技术,您可以发送任意数量的参数。

PS:确保明智地选择分隔符 ,以便它不是在参数内容之一包括在内。



Answer 3:

对于那些谁仍与此挣扎,你可以在笨解决上述问题itself-

控制器

class Mycontroller extends CI_Controller{
   public function my_method($arg1, $arg2){
     echo $arg1;
     echo "<br>";
     echo $arg2;
   }
}

那么你的URL将被

HTTP://本地主机/ CIProjectFolder / myController的/ my_method /参数1 /参数2



文章来源: How to pass multiple variables from URL request in Codeigniter?