【问题标题】:How to create the multi-level url in Codeigniter?如何在 Codeigniter 中创建多级 url?
【发布时间】:2020-04-01 07:25:48
【问题描述】:

我正在尝试在 Codeigniter 中创建多级 URL,并在 route.php 文件中定义了以下路由

$route['users/(:any)/usersnippet/(:any)'] = 'users/usersnippet/$1';

借此,我想创建以下网址

https://websiteurl.com/users/john-kendey-115643/usersnippets/Tru564Y

如何创建?

【问题讨论】:

  • 所以你试图在用户控制器中调用用户类和 usersn-p 方法。我认为您只是缺少 .../$1/$2 来传递两个参数。 $route['users/(:any)/usersn-p/(:any)'] = 'users/usersn-p/$1/$2';
  • @DinoCajic 仍然找不到页面
  • @mickmackusa 我认为这个问题与您标记为骗子的问题完全不同,它要求提供路线解决方案,而不是如何解决网址
  • @Vickel 在该页面上也有关于路由的答案。欢迎您投票重新开放,或者您可以找到更好的副本。我找到了一个之后就停止了寻找,但我很确定这个基本的 CI 任务会有多个重复项。我很感激您正在寻找一个未回答的问题。会有更多收获。
  • @mickmackusa 我不能投票重新开放,因为我参与了这个问题?它也不是那么基本,因为用户试图通过一个 url 获取 2 个不同控制器的参数。这是错误的方法,我在TBH之前没有见过它

标签: php codeigniter codeigniter-3


【解决方案1】:

借此,我想创建以下网址

您无需使用CI routes 创建 URL,而是将您的 URL 路由到控制器函数并为该函数提供参数。

您的示例网址

https://websiteurl.com/users/john-kendey-115643/usersnippets/Tru564Y

实际上是一个错误的概念,因为“/user/john-kendey-115643/”之后的所有内容都被视为参数。见CI URLs

我会用更简洁和用户友好的 URL 来解决您的问题:

网址:

https://websiteurl.com/users/john-kendey-115643/Tru564Y

路线:

$route['users/(:any)/(:any)'] = 'users/process_users/$1/$2';

控制器

class Users extends CI_Controller {
    
    function __construct()
    {
        parent::__construct(); 
        // load your models
        $this->load->model('Get_user');
        $this->load->model('Get_user_snippet');
    }   
    
    function process_users ($user, $snippet){
        // get userdata
        $data['user']=$this->Get_user->get_the_userdata ($user);
        $data['snippet']=$this->Get_user_snippet->get_the_snippetdata ($snippet);
        // do something with $data
    }

}

模型(Get_user、Get_user_sn-p):

// Query the database for the data you need

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2019-11-25
    • 2021-09-21
    • 2013-09-17
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多