So I added a __call method to handle missing actions, but I still don't understand how to handle missing controllers. If the controller does not exist it does not fall back on the default controller. And idea on how to do this?
Mark On 1/20/07, Jan Pieper <[EMAIL PROTECTED]> wrote:
I think if the Controller does not exists, the default controller (e.g. IndexController) and the default action (e.g. indexAction) is called. If the action-Method does not exists, you'll get an empty page or an exception will be thrown because there is no noRouteAction any more. You have to define your own noRouteAction. I created an My_Controller_Action class that extends Zend_Controller_Action and added the magic __call method to handle actions that does not exist. After that you have to create your Controllers by extending My_Controller_Action and all unhandled action-calls will be catched and you can redirect to another place (could be bad if the action of called controller does not exists) or you should output an "not found" page or something else. -- Jan > Actually if your url requests a controller that does not exist, or a > controller that does exist but an action that does not exist you do > not get a 404 error because mod_rewrite sends everything to index.php. > > So how do you handle this? Throwing an exception or giving a blank > page doesn't seem like a user friendly response when somebody enters > the wrong url into their browser. > > > Mark > > On 1/19/07, Andrey Korolyov <[EMAIL PROTECTED]> wrote: >> If you get / - you have indexFile >> If you get /test.html - you have 200 response or 404 >> >> Default controller like index file for web server. >> >> 2007/1/19, Mark Wright < [EMAIL PROTECTED]>: >> > I don't understand why a default controller isn't being used. Here's my >> code: >> > >> > >> > $baseUrl = substr($_SERVER['PHP_SELF'], 0, >> > strpos($_SERVER['PHP_SELF'], '/index.php')); >> > $frontController = Zend_Controller_Front::getInstance(); >> > $frontController->setBaseUrl($baseUrl); >> > $frontController->setControllerDirectory($path_to_root . >> > 'application/controllers'); >> > $frontController->throwExceptions(true); >> > >> > $frontController->dispatch(); >> > >> > If I go to / or /index it works fine. If I go to /aa it throws an >> > exception because aaController.php doesn't exist. But I thought the >> > default controller was index so that if there is no aa controller it >> > would default to the index controller. What am I missing? >> > >> > >> > Mark >> > >> > -- >> > Have fun or die trying - but try not to actually die. >> > >> >> >> >> >> -- >> Andrey Korolyov | WEB Developer >> >> e | [EMAIL PROTECTED] > >
-- Have fun or die trying - but try not to actually die.
