【问题标题】:how to get name of dynamically generated method in codeigniter如何在codeigniter中获取动态生成的方法的名称
【发布时间】:2018-01-28 11:00:52
【问题描述】:

我实现的url如下

myapp.com/profile/username1

myapp.com/profile/username2

myapp.com/profile/username3

我的 routes.php 文件包含以下代码行

$route['profile/(:any)'] = 'profile/user_profile/$profile_method';

我的profile 控制器包含此代码

    public function user_profile($profile_method)
    {
        echo $profile_method;
    }

一切都很好,但问题是我想返回用户名以进一步处理,此方法返回参数名称而不是用户名。请告诉我哪里做错了?

【问题讨论】:

    标签: php codeigniter url


    【解决方案1】:

    提示您在用户名 myapp.com/profile/username/1 之后没有 /

    试试

    $route['profile/(:any)'] = 'profile/user_profile/$1';
    $route['profile/(:any)/(:num)'] = 'profile/user_profile/$1/$2';
    

    代替

    $route['profile/(:any)'] = 'profile/user_profile/$profile_method';
    

    http://www.codeigniter.com/user_guide/general/routing.html#examples

    然后

    public function user_profile($profile_method = '', $id = '')
    {
        echo $profile_method . ' <br/> ' . $id;
    }
    

    确保您已正确命名控制器和其他文件,其中只有类和文件名的第一个字母为大写 Profile.php

    您可能需要在主目录中有一个 htaccess 才能从 url 中删除 index.php。

    https://github.com/wolfgang1983/htaccess_for_codeigniter


    来自Magnus Eriksson评论

    CI 使用正则表达式替换动态 url 变量,这意味着 $1 = 第一个匹配,$2 = 第二个匹配等等。$-part 不是普通的 php-variable,所以你不能命名它是你想要的。


    【讨论】:

    • 它工作正常。但我仍然想知道它是如何工作的以及更改路由中的参数名称为什么会影响相关控制器
    • @SarjilShaikh - CI 的路由器正在使用正则表达式来替换动态 url 变量,这意味着 $1 = 第一个匹配,$2 = 第二个匹配等等。$-part不是一个普通的 php 变量,所以你不能把它命名为你想要的。
    猜你喜欢
    • 1970-01-01
    • 2018-08-09
    • 2018-02-22
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多