Reputation: 573
I'm trying to make a website using the Zend Framework because I heard it was really good and I'd like to experiment with frameworks, but I have a simple problem driving me crazy.
I'd like to make a simple mywebsite.com/about page with static content because there is no need to do anything else than display html.
I made an About controller, the phtml associated with it, but when I try to go to /about, I get a 404 error followed by:
The requested controller could not be mapped to an existing controller class.
Controller:
not-found(resolves to invalid controller class or alias: not-found)
So I checked my routing file:
'router' => array(
'routes' => array(
'about' => array(
'type' => 'segment',
'options' => array(
'route' => '/about',
),
'defaults' => array(
'controller' => 'About\Controller\About',
'action' => 'index',
),
),
),
),
so if I'm not wrong this is supposed to call the About controller that I made, but can't manage to find the problem.
If someone could help me understand what I missed or what I didn't get with Zend, I will be very glad.
EDIT: The version of Zend is 2.x if that changes anything
#EDIT 2: I found the solution thanks to the help of James Kent
My routing file seemed to be wrong, here is the new one :
'router' => array(
'routes' => array(
'about' => array(
'type' => 'Literal',
'options' => array(
'route' => '/about',
'defaults' => array(
'__NAMESPACE__' => 'About\Controller',
'controller' => 'About',
'action' => 'index',
),
),
),
),
),
I also had to change the indexAction of my About controller:
class AboutController extends AbstractActionController
{
public function nolayoutAction() {
$viewModel = new ViewModel();
//$viewModel->setTerminal(true); Uncomment to disable the layout
return $viewModel;
}
public function indexAction()
{
$viewModel = $this->nolayoutAction();
return $viewModel;
}
}
I hope it will help some people.
Upvotes: 3
Views: 703
Reputation: 2904
From what I can recall, something like this should work:
$route = new Zend_Controller_Router_Route_Static(
'about',
array('controller' => 'about')
);
$router->addRoute('about', $route);
In the meantime, I'm going to look for the documentation where I originally learned about this.
Edit: As it turns out, what you may need are Custom Routes, and their documentation is over here.
Upvotes: 2