У меня похожая проблема.Не потому, что у меня есть внешняя система, а потому, что я не люблю помещать все параметры в URL-путь.В моем примере у меня есть несколько поисковых запросов, которые собираются и передаются в контроллер.ИМХО, эти запросы должны быть параметрами GET, а не частью URL-пути.
Одним из преимуществ использования параметров GET является то, что порядок заданных параметров не важен, в отличие от передачи параметров через путь URL.,
Чтобы решить эту проблему общим способом, я заменяю все аргументы метода значением GET-параметра, если дан один с тем же именем:
class MyController extends AppController
{
function test($var1 = null, $var2 = "content2")
{
foreach (get_defined_vars() as $key => $value) {
if (isset($this->params['url'][$key])) {
$getvalue = $this->params['url'][$key];
$$key = $getvalue;
CakeLog::write("debug", "Setting:$key to $getvalue");
}
}
CakeLog::write("debug", print_r(get_defined_vars(), true));
}
}
СейчасЯ могу получить доступ к этому методу контроллера и передать параметры через GET следующим образом:
http://myapp/mycontroller/test?var1=foo&var2=bar