0

我是codeigniter的新手我有一个三页的网站。(关于联系人的主页)我想在每个人身上放置一个锚点,并在控制器的索引函数中使用 $this->uri->segment() 捕获最后一段。然后使用我想指向确切页面的开关。

这是我的主播之一:

<h3  id="anchor_storefront"><?php echo anchor('jstorecontroll/home', 'Home'); ?></h3>

这是我在控制器索引中的代码:

 switch( $this->uri->segment(2) )
        {
            case "":
            case "home":
                $this->load->view('public/home');
                break;
        }

专家可以指导我吗?谢谢

4

1 回答 1

1

为每个页面设置一个功能怎么样?这遵循 CodeIgniter 常用的 URI 模式example.com/class/function/id/——如下所示:

class Jstorecontroller extends CI_Controller
{

    function index()
    {
        //Do what you want... load the home page?
    }

    //Load the 'home' page
    function home()
    {
        $this->load->view('public/home');
    }

    //Load the 'about' page
    function about()
    {
        $this->load->view('public/about');
    }

    //Load the 'contact' page
    function contact()
    {
        $this->load->view('public/contact');
    }

}

路由可用于映射 URL:要将jstorecontroll作为第一段和第二段映射到控制器中的index函数jstorecontroll,您可以使用此路由(在application/config/routes.php中):

$route['jstorecontroll/(:any)'] = "jstorecontroll/index/$1";

您可能希望使用正则表达式来限制映射的内容,例如:

$route['jstorecontroll/([a-z]+)'] = "jstorecontroll/index/$1";

然后你可以在你的控制器中有一个函数来过滤并加载相应的页面。但是,请注意用户输入 - 不要相信他们!确保清理输入。

class Jstorecontroll extends CI_Controller
{

    function index($page = FALSE)  //Default value if a page isn't specified in the URL.
    {
        if($page === FALSE)
        {
            //Do what you want if a page isn't specified. (Load the home page?)
        }
        else
        {
            switch($page)
            {
                case "home":
                    $this->load->view('public/home');
                    break;
                case "about":
                    $this->load->view('public/about');
                    break;
                case "contact":
                    $this->load->view('public/contact');
                    break;
            }
        }
    }

}

如果您希望从 URI 调用此控制器中的其他函数,则使用上述路由可能会产生不希望的结果,它们不会被调用,而是作为参数映射到index函数。除非您考虑更改(或添加)路线,否则您可以考虑重新映射功能。就个人而言,我只想为每个页面使用一个函数!

于 2013-07-29T16:17:14.457 回答