【问题标题】:Setup codeigniter URL with multiple methods within one class在一个类中使用多个方法设置 codeigniter URL
【发布时间】:2018-04-11 19:36:46
【问题描述】:

示例网址:

第一个网址: http://sample.com/api/campaign/999 - 这个网址包含下一个网址:

http://sample.com/api/campaign/list/1

如何将campaign 的路由网址设置为id 后跟的方法 并且还有list 方法也有id

【问题讨论】:

  • “这个网址包含下一个网址”是什么意思?
  • 页面包含下一个url~
  • api 控制器还是包含campaign 控制器的文件夹?
  • api 是控制器

标签: php codeigniter routing


【解决方案1】:

我会使用专用方法(假设 Api.php 是控制器文件)。 制作 list() 方法并在其中放入所需的代码

public function list($arg)
{
    // code for this one
}

然后在APPPATH.'config/routes.php'解析请求:

$route['api/campaign/list/(:num)'] = 'api/list/$1';
$route['api/campaign/(:num)'] = 'api/campaign/$1';

如果您不希望 api/list/1 可访问,请使用 .htaccess 重定向解决它:

RedirectMatch 301 ^/api/list/(.*)$ /api/campaign/list/$1

【讨论】:

  • 感谢@Tpojka,我按照你的建议做了,但在 api/campaign/list/1 - list 方法没有被调用,它仍然使用campaign 方法,虽然我可以访问 api /list/1 不应该是这种情况
  • 稍微改变了路由文件。立即检查。
  • @woninana 你对.htaccess 文件进行了更改吗?
  • 是的,.htaccess 已修改,仍然 - 在campaign/list/1 - 它仍然调用campaign 方法hmm
  • 在私人浏览器窗口中测试它。确保您不依赖旧的浏览器缓存。
【解决方案2】:

还有另一种不需要任何路由或.htaccess技巧的方法。

class Api extends CI_Controller
{

    public function campaign($param1, $param2 = FALSE)
    {

        if(is_numeric($param1))
        {
            $this->do_something($param1);
        }
        elseif($param2)
        {
            $valid_methods = ['list', 'foo', 'bar'];
            if(in_array($param1, $valid_methods))
            {
                $this->$param1($param2);
            }
        }
    }

    protected function do_something($param)
    {
        echo "Doing somethig with $param";
    }

    protected function list($param)
    {
        echo "running list using $param";
    }

    protected function foo($param)
    {
        echo "running foo using $param";
    }

    protected function bar($param)
    {
        echo "running bar using $param";
    }
}

【讨论】:

  • 谢谢!我发现这个解决方案对我的其他控制器很有用。对于管理短控件也有点方便
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 2013-09-12
相关资源
最近更新 更多