<?php
/**
* Zend Framework (http://framework.zend.com/)
*
* @link http://github.com/zendframework/zf2 for the canonical source repository
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
namespace Zend\Mvc\Controller;
use Zend\Http\Response as HttpResponse;
use Zend\Mvc\Exception;
use Zend\Mvc\MvcEvent;
use Zend\View\Model\ConsoleModel;
use Zend\View\Model\ViewModel;
/**
* Basic action controller
*/
abstract class AbstractActionController extends AbstractController
{
/**
* @var string
*/
protected $eventIdentifier = __CLASS__;
/**
* Default action if none provided
*
* @return array
*/
public function indexAction()
{
return new ViewModel(array(
'content' => 'Placeholder page'
));
}
/**
* Action called if matched action does not exist
*
* @return array
*/
public function notFoundAction()
{
$response = $this->response;
$event = $this->getEvent();
$routeMatch = $event->getRouteMatch();
$routeMatch->setParam('action', 'not-found');
if ($response instanceof HttpResponse) {
return $this->createHttpNotFoundModel($response);
}
return $this->createConsoleNotFoundModel($response);
}
/**
* Execute the request
*
* @param MvcEvent $e
* @return mixed
* @throws Exception\DomainException
*/
public function onDispatch(MvcEvent $e)
{
$routeMatch = $e->getRouteMatch();
if (!$routeMatch) {
/**
* @todo Determine requirements for when route match is missing.
* Potentially allow pulling directly from request metadata?
*/
throw new Exception\DomainException('Missing route matches; unsure how to retrieve action');
}
$action = $routeMatch->getParam('action', 'not-found');
$method = static::getMethodFromAction($action);
if (!method_exists($this, $method)) {
$method = 'notFoundAction';
}
$actionResponse = $this->$method();
$e->setResult($actionResponse);
return $actionResponse;
}
/**
* Create an HTTP view model representing a "not found" page
*
* @param HttpResponse $response
* @return ViewModel
*/
protected function createHttpNotFoundModel(HttpResponse $response)
{
$response->setStatusCode(404);
return new ViewModel(array(
'content' => 'Page not found',
));
}
/**
* Create a console view model representing a "not found" action
*
* @param \Zend\Stdlib\ResponseInterface $response
* @return ConsoleModel
*/
protected function createConsoleNotFoundModel($response)
{
$viewModel = new ConsoleModel();
$viewModel->setErrorLevel(1);
$viewModel->setResult('Page not found');
return $viewModel;
}
}
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
|
|