Php Codeigniter更改URL方法名称

Php Codeigniter更改URL方法名称,php,codeigniter,Php,Codeigniter,我是新来的 我想用add\u car将地址栏url中的函数名更改为addcar 实际上,我的url创建如下 http://localhost/projectName/controller/add_car 但我想在URL以下 http://localhost/projectName/controller/addcar 可能吗?请帮帮我 [注意]:我的实际方法名称是添加车将添加车功能更改为控制器中的添加车 function add_car(){ //... } <?php defin

我是新来的

我想用
add\u car
将地址栏url中的函数名更改为
addcar

实际上,我的url创建如下

http://localhost/projectName/controller/add_car
但我想在URL以下

http://localhost/projectName/controller/addcar
可能吗?请帮帮我


[注意]
:我的实际方法名称是
添加车

添加车
功能更改为控制器中的
添加车

function add_car(){
  //...
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Add_car extends CI_Controller {

public function __construct()
{
    parent::__construct();
}

public function car_lookup($method = NULL)
{
    if (method_exists($this, $method))
    {
        $this->$method();
    }
    else
    {
        $this->index(); // call default index
    }
}

public function index()
{
    echo "index";
}


public function method_a()
{
    echo "aaaaa";
}

public function method_b()
{
    echo "bbbbb";
}
}

或者在
routes.php中

$route['controller/add_car'] = "controller/addcar";
$route['controller/addcar'] = 'controller/add_car';
$route['controller/deletecar'] = 'controller/delete_car';

您可以在路线上使用此选项:

$route['addcar'] = 'Add_car/index';
$route['addcar/(:any)'] = 'Add_car/car_lookup/$1';
你的控制器呢

function add_car(){
  //...
}
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Add_car extends CI_Controller {

public function __construct()
{
    parent::__construct();
}

public function car_lookup($method = NULL)
{
    if (method_exists($this, $method))
    {
        $this->$method();
    }
    else
    {
        $this->index(); // call default index
    }
}

public function index()
{
    echo "index";
}


public function method_a()
{
    echo "aaaaa";
}

public function method_b()
{
    echo "bbbbb";
}
}

您可以通过两种方法来完成

方法01

编辑-
config/routes.php

$route['controller/add_car'] = "controller/addcar";
$route['controller/addcar'] = 'controller/add_car';
$route['controller/deletecar'] = 'controller/delete_car';
输出-
www.exapmle.com/controller/addcar


方法02

根据需要更改控制器功能名称

public function addcar($value='')
{
    # code...
}
public function deletecar($value='')
{
    # code...
}
输出-
www.exapmle.com/controller/addcar


进一步了解

如果您使用
$route['addcar']='controller/add_car'URL看起来像

www.exapmle.com/addcar
$route['controller/([a-z]+)z([a-z]+)']=“controller/$1$2”

上面的示例将在两个字符串之间包含“\u1”的每个请求操作路由到不带“\u1”的操作/方法

有关代码点火器正则表达式路由的详细信息:

我不想更改控制器中的命名约定。下划线没问题。对于每个方法,我都需要指定其
路由
?实际上,我想在URL地址栏中更改方法名称,但不想更改实际的方法名称。在这种情况下使用路由。但是我有很多
控制器
和很多
方法
?对于每个方法,我都需要指定其
路线
?如果您使用此路线。您不需要每次添加新方法时都定义新路由。请转到
config/routes.php
并添加
$route['addcar']=“add_car”@Saty但是我有很多
控制器
和很多
方法
?检查这个@Saty谢谢你的帮助我会试试的我在编辑我的答案。。您可以使用car_lookup函数映射您的方法。我尝试了您的答案$route['controller/addcar']='controller/add_car';如果我尝试www.mydomain.com/controller/addcar,那么它可以工作,但我在$route['(:any)]='controller/$1'之前使用过;(删除控制器名称)则其不工作。