那麼,您當前的路線不會匹配/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
變量與您的數據庫/模型有關,否則您不想爲其創建模型。模型進行驗證,因爲在將東西放入數據庫之前這是一個重要的步驟,但這並不意味着它們是可以或應該進行驗證的唯一應用程序部分。
何時/何地/爲什麼/如何以及最重要*您需要在此處驗證什麼* – deceze 2010-12-02 01:46:33