【问题标题】:Codeigniter Change URL method nameCodeigniter 更改 URL 方法名称
【发布时间】:2016-03-17 01:17:17
【问题描述】:

我是 CI 新手。

我想将地址栏 url 中的函数名称与 add_car 更改为 addcar

其实我的网址是这样创建的

http://localhost/projectName/controller/add_car

但我想在 URL 中关注

http://localhost/projectName/controller/addcar

有可能吗?请帮帮我。

[Note]:我的实际方法名称是add_car

【问题讨论】:

  • 转到config/routes.php并添加$route['addcar'] = "add_car" ;
  • @Saty 但是我有很多 controller 和很多 method 呢?
  • 查看link
  • @Saty 谢谢帮忙我会试试的
  • hei @Sadikhasan 我正在编辑我的答案..您可以使用 car_lookup 函数映射您的方法。

标签: php codeigniter


【解决方案1】:

你可以通过两种方法做到这一点

方法01

编辑 - config/routes.php

$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/addcar'] = 'controller/add_car';如果我尝试 www.mydomain.com/controller/addcar 那么它可以正常工作,但我在 $route['(:any)'] = 'controller/$1';(remove the controller name) 之前使用过它就不能正常工作。
【解决方案2】:

在您的控制器中将 add_car 函数更改为 addcar

function add_car(){
  //...
}

function addcar(){
          ^
  //...
}

或在routes.php

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

【讨论】:

  • 我不想更改控制器中的命名约定。下划线没问题。
  • 对于我需要指定其route的每种方法?
  • 其实我想改变URL地址栏中的方法名不想改变实际的方法名。
  • 在这种情况下使用路由。
  • 但是我有很多 controller 和很多 method 呢?
【解决方案3】:

$route['controller/([a-z]+)_([a-z]+)'] = "controller/$1$2";

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

更多关于 Code Igniter 正则表达式路由:
https://ellislab.com/codeigniter/user-guide/general/routing.html

【讨论】:

    【解决方案4】:

    您可以在路线上使用它:

    $route['addcar'] = 'Add_car/index';
    $route['addcar/(:any)'] = 'Add_car/car_lookup/$1';
    

    和你的控制器

    <?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";
    }
    }
    

    【讨论】:

    • 对于我需要指定其route的每种方法?
    • 如果你使用这个。您无需在每次添加新方法时都定义新路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2020-07-03
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多