CodeIgniter - 可选参数

Sil*_*ado 7 php codeigniter

我正在构建我的第一个CodeIgniter应用程序,我需要制作如下URL:

controllername/{uf}/{city}
Run Code Online (Sandbox Code Playgroud)

示例:/ rj/rio-de-janeiro此示例应该为我提供2个参数:$ uf('rj')和$ city('rio-de-janeiro')

另一个URL可能是:

controllername/{uf}/{page}
Run Code Online (Sandbox Code Playgroud)

示例:/ rj/3此示例应该为我提供2个参数:$ uf('rj')和$ page(3)

换句话说,参数"city"和"page"是选项.我不能传递'/ uf/city/page'之类的东西.我总是需要或'城市'或''页'.但我不知道如何在CodeIgniter配置中配置这些路由以指向相同的方法(甚至不同的方法).

Sil*_*ado 12

我找到了正确的结果:

$route['controllername/(:any)/(:any)/(:num)'] = 'ddd/index/$1/$2/$3';
$route['controllername/(:any)/(:num)'] = 'ddd/index/$1/null/$2'; // try 'null' or '0' (zero)
$route['controllername/(:any)'] = 'ddd/index/$1';
Run Code Online (Sandbox Code Playgroud)

Index方法(在"ControllerName"中)应该是:

public function Index($uf = '', $slug = '', $pag = 0)
{
    // some code...

    if (intval($pag) > 0)
    {
        // pagination
    }

    if (!empty($slug))
    {
        // slug manipulation
    }
}
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人.谢谢你们.

  • @ V.Vachev尝试传递0(零)而不是null. (2认同)