Ваш текущий маршрут не будет совпадать с /ctrl/action/modea/5010
, поэтому он будет проходить по другому маршруту, скорее всего, по стандартному маршруту, который отправит запрос на Ctrl_controller::action('modea', 5010)
. То есть у вас в основном тот же результат.
Лучшее, что можно сделать, это, вероятно, просто пропустить маршрут, так как он на самом деле никуда не направляет, куда бы он не пошел. Просто проверьте действие в вашем контроллере перед использованием значений:
function action($mode, $year) {
if (!in_array($mode, array('modea', 'modeb')) || $year < 1900 || 3000 < $year) {
$this->cakeError('error404');
}
... business as usual ...
}
Или:
function action($mode, $year) {
switch ($mode) {
case 'modea' :
...
break;
case 'modeb' :
...
break;
default :
$this->cakeError('error404');
}
}
Или какая-то их комбинация. Если переменные $mode
и $year
не имеют ничего общего с вашей базой данных / моделью, вы не хотите создавать модель для нее. Модели выполняют валидацию, потому что это важный шаг перед помещением данных в базу данных, но это не значит, что они являются единственной частью приложения, которая может или должна выполнять валидацию.