Jay Zus
Jay Zus

Reputation: 573

Can't manage to make a static page with Zend Framework (about us)

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

Answers (1)

Arrow
Arrow

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

Related Questions