在路由中添加参数 URL Codeigniter

Adding Parameters in Routing URL Codeigniter

我在路由和参数方面遇到了一些问题。

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

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

在我的控制器中,我是这样的:

<?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 页面未找到

这是我的路线:

127.0.0.1/project/register/buyer

127.0.0.1/project/是我的基地URL

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

谢谢。

您的路线有误。根据您的 post,您正在设置 Member 控制器然后注册方法。

试试下面的代码

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

第二个选项只是可选的:

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

Typically there is a one-to-one relationship between a URL string and its corresponding controller class/method. The segments in a URI normally follow this pattern:

example.com/class/function/id/ In some instances, however, you may want to remap this relationship so that a different class/method can be called instead of the one corresponding to the URL.

For example, let’s say you want your URLs to have this prototype:

example.com/product/1/ example.com/product/2/ example.com/product/3/ example.com/product/4/ Normally the second segment of the URL is reserved for the method name, but in the example above it instead has a product ID. To overcome this, CodeIgniter allows you to remap the URI handler.

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

因此,路由遵循此语法

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

所以,你的路线是

让我知道您的疑问

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