【问题标题】:Adding Parameters in Routing URL Codeigniter在路由 URL Codeigniter 中添加参数
【发布时间】:2016-09-22 08:29:43
【问题描述】:

路由和参数有问题。

我在 routes.php 中有这样的路由:

$route['register/(:any)'] = 'member/register/$1';

在我的控制器中我有这样的:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Register extends CI_Controller 
{
    function __construct()
    {
        parent::__construct();
        $this->load->model('Page_model');
        $this->load->model('member_model');
        $this->load->model('login_model');

        $this->load->library('session');
        $this->load->helper('url');
        $this->load->helper('html');
        $this->load->helper('form');

    }

    public function index()
    {
        $slug = $this->uri->segment(1);
        $type = $this->uri->segment(2);

        var_dump($type);
        exit();

        if ($slug != NULL) 
        {
            $data['page'] = $this->Page_model->get_page($slug);

            if (empty($data['page'])) 
            {
                // show_404();
                $data['page'] = new stdClass();
                $data['page']->page_template = 'forofor';
                $data['page']->title = 'Page Not Found';
                $data['page']->meta_description = 'Page Not Found';
                $data['page']->meta_keywords = 'Page Not Found';
            }
            else
            {
                $data['slider'] = $this->Page_model->get_slider($data['page']->page_id);
            }
        }
        else
        {
            $data['page'] = $this->Page_model->get_page('home');
            $data['slider'] = $this->Page_model->get_slider($data['page']->page_id);
        }

        $data['head_title'] = $data['page']->title;

        // load all settings and data
        $data['settings'] = $this->Page_model->get_settings();
        $data['gallery'] = $this->Page_model->get_gallery();

        $data['meta'] = 
            array(
                array(
                    'name' => 'description', 
                    'content' => $data['page']->meta_description
                ),
                array(
                    'name' => 'keywords',
                    'content' => $data['page']->meta_keywords
                )
            );

        // $data['meta'] = $this->meta;

        $data['menu'] = $this->Page_model->get_menu('frontend','header');
        $data['settings'] = $this->Page_model->get_settings();
        $data['notice'] = $this->session->flashdata('notice');

        // $this->load->view('frontend/template/index_full', $data);

        $this->load->view('frontend/template/head', $data);
        $this->load->view('frontend/template/pre_header');
        $this->load->view('frontend/template/header');
        $this->load->view('frontend/template/modal');
        //$this->load->view('frontend/template/modal_registration');
        /*if ($page[0]->page_template != 'forofor' && $data['page']->slider != 0) 
        {
            $this->load->view('frontend/template/slider');
        }*/
        if ($slug != 'home' && $slug != NULL) 
        {
            //$this->load->view('member/'.$data['page']->page_template);
            $this->load->view('member/register');
        }
        else
        {
            $this->load->view('frontend/template/slider');
            $this->load->view('frontend/page_template/homepage');
        }
        $this->load->view('frontend/template/pre_footer');
        $this->load->view('frontend/template/footer');
        $this->load->view('frontend/template/js');
        $this->load->view('frontend/template/closing_body_html');
    }
}

但是如果我在浏览器中输入路线,它会给我 404 Page not found

这是我的路线:

127.0.0.1/project/register/buyer

127.0.0.1/project/ 是我的基本网址

有人知道为什么会这样吗?

谢谢。

【问题讨论】:

  • 您已经发布了您的Register 控制器并在您的路由中调用了Member 控制器Register 函数,这是错误的,所以请告诉我们您到底需要什么

标签: codeigniter routing url-routing


【解决方案1】:

您的路由错误。根据您的帖子,您正在设置Member 控制器然后注册方法。

试试下面的代码

$route['register/(:any)'] = 'register/index/$1';
$route['register/(:any)/(:any)'] = 'register/index/$1/$2'; // Optional

第二个选项只是可选的:

【讨论】:

    【解决方案2】:

    这就是路由在 Codeigniter 中的工作方式

    通常在 URL 字符串和 其相应的控制器类/方法。 URI 中的段 通常遵循这种模式:

    example.com/class/function/id/ 但是,在某些情况下,您可以 想要重新映射这种关系,以便不同的类/方法可以 被调用,而不是与 URL 对应的那个。

    例如,假设您希望您的网址具有以下原型:

    example.com/product/1/example.com/product/2/example.com/product/3/ example.com/product/4/ 通常 URL 的第二段是 为方法名称保留,但在上面的示例中,它改为 产品 ID。为了克服这个问题,CodeIgniter 允许您重新映射 URI 处理程序。

    参考:https://www.codeigniter.com/userguide3/general/routing.html

    所以,路由遵循这个语法

    $route['route_url'] = 'controller/method/$paramater';
    

    所以,你的路线将是

    让我知道您的疑问

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 2018-05-01
      • 1970-01-01
      • 2015-04-24
      • 2018-06-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多