9

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

controllername/{uf}/{city}

示例:/rj/rio-de-janeiro 这个示例应该给我 2 个参数:$uf ('rj') 和 $city ('rio-de-janeiro')

另一个可能的 URL 是:

controllername/{uf}/{page}

示例:/rj/3 这个示例应该给我 2 个参数:$uf ('rj') 和 $page (3)

换句话说,参数“city”和“page”是可选的。我不能通过像“/uf/city/page”这样的东西。我总是需要或“城市”或“页面”。但我不知道如何在 CodeIgniter 配置中配置这些路由以指向相同的方法(甚至指向不同的方法)。

4

3 回答 3

16

我找到了正确的结果:

$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';

Index 方法(在“ControllerName”内)应该是:

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

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

    if (!empty($slug))
    {
        // slug manipulation
    }
}

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

于 2013-09-24T05:12:17.583 回答
1
public function my_test_function($not_optional_param, $optional_param = NULL)
  { 
   //do your stuff here
  }

你试过这个吗?

于 2013-09-24T05:04:14.897 回答
0

例如,假设您有一个这样的 URI:

  1. example.com/index.php/mycontroller/myfunction/hello/world
  2. example.com/index.php/mycontroller/myfunction/hello

您的方法将传递 URI 段 3 和 4(“hello”和“world”):

类 MyController 扩展 CI_Controller {

public function myFunction($notOptional, $optional = NULL)
{
    echo $notOptional; // will return 'hello'.
    echo $optional; // will return 'world' using the 1st URI and 'NULL' using the 2nd.
}

}

参考:https ://codeigniter.com/user_guide/general/controllers.html

于 2015-10-01T04:35:51.360 回答