日記
いまいち意図がわからんEdit

この間の「無効なルーティングでIndex/Indexを呼ばせない」で書いたZend_Controller_Dispatcher_Standard::isDispachable()の件は1.0.2で修正されたみたいだけど、その修正と同時にdispatch()周りにいろいろ手が入れられた結果、dispatch()周りの挙動が相変わらずおかしい。どういう挙動が正しいつもりなのかいまいちつかめないんだけど、Zend_Controller_Dispatcher_Standard::dispatch()の中の、

       /**
* Get controller class
*/
if (!$this->isDispatchable($request)) {
$controller = $request->getControllerName();
if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
require_once 'Zend/Controller/Dispatcher/Exception.php';
throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');
}
$className = $this->getDefaultControllerClass($request);
} else {
$className = $this->getControllerClass($request);
if (!$className) {
$className = $this->getDefaultControllerClass($request);
}
}

のあたり、!$this->getParam('useDefaultControllerAlways') かつempty($controller)の場合(=ルーティングが解決されなかった場合に、例外を投げてほしい)が考慮に入れられてない。!empty()がempty()の間違いなだけなのかもしれないと思いつつも、だったら

throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');

ってのがおかしくなる。Invalid controllerなのは!empty()な場合だから、例外の内容は現状の条件であっているように思えるし。よくわからんなー。

Published At2007-09-26 00:00Updated At2007-09-26 00:00