本文整理汇总了PHP中Dispatcher::loadController方法的典型用法代码示例。如果您正苦于以下问题:PHP Dispatcher::loadController方法的具体用法?PHP Dispatcher::loadController怎么用?PHP Dispatcher::loadController使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Dispatcher
的用法示例。
在下文中一共展示了Dispatcher::loadController方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: loadAction
/**
* Load a controllers action, and ask the View to render it.
*
* @access public
* @param object $controller Controller object that we want to load the action for.
* @param string $action Name of the action we wish to load.
* @static
*/
public static function loadAction($controller, $action)
{
// Start the profiler
Profiler::register('Core', 'Dispatcher');
// In order to have pretty URL's we allow the basic routing to contain
// .. dashes in their action names which will be removed here. It allows
// .. /index/hello-world to be routed to /index/helloworld.
$action = str_replace('-', '', $action);
$actionExists = is_callable(array($controller, $action . 'Action'));
$controllerName = str_replace(Config::get('settings', 'project') . '\\Controller\\', '', get_class($controller));
// Make sure that the controller has the action
if (!$actionExists) {
// If this is the error controller then there is no hope
if ($controllerName == 'Error') {
die('Sorry, an error occurred whilst processing your request.');
} else {
if ($action != 'error') {
Profiler::deregister('Core', 'Dispatcher');
Dispatcher::loadAction($controller, 'error');
} else {
Profiler::deregister('Core', 'Dispatcher');
Profiler::deregister('Controller', $controllerName);
Dispatcher::loadController('Error', 'notFound');
}
}
}
// We are able to call the controllers action
Event::trigger('initAction', array('controller' => $controller, 'action' => $action));
Profiler::deregister('Core', 'Dispatcher');
Profiler::register('Action', $action);
// Set the controller and action that we are heading to
$controller->view->controller = $controllerName;
$controller->view->action = $action;
// Call and render this action
$controller->{$action . 'Action'}();
$controller->view->render();
}
示例2: forward
/**
* Whilst in controller context, move to another controller/action.
*
* When forwarding to a new action or controller/action, the URL will not
* change, this is an internal redirect.
*
* Forwarding to an action in the same controller
*
* <code>
* $this->forward('newAction');
* </code>
*
* Forwarding to a new controller and action.
*
* <code>
* $this->forward('newAction', 'newController');
* </code>
*
* @access public
* @param string $action The action we wish to forward to.
* @param string $controller The controller we wish to forward to.
* @throws Exception From the Dispatcher if the controller/action does not exist.
*/
public function forward($action = 'index', $controller = '')
{
// Reregister the action in the profile
Profiler::deregister('Action', $this->view->action);
// Set which controller has called this function. If it is the same as
// .. the user specified controller then we do not need to instantiate
// .. a whole new controller, we can simply forward to its action
$controllerCaller = str_replace(Config::get('settings', 'project') . '\\Controller\\', '', get_called_class());
// Calling an action in the same controller
if ($controller == '' || $controller == $controllerCaller) {
Dispatcher::loadAction($this->child, $action);
} else {
Profiler::deregister('Controller', $this->view->controller);
Dispatcher::loadController($controller, $action);
}
}
示例3: route
/**
* Start the routing procedure and find a valid route, if any.
*
* @access public
*/
public function route()
{
// Start the profiler
Profiler::register('Core', 'Router');
// First, let's look at the URL the user supplied
$requestUrl = array_values(array_filter(explode('/', Request::getUrl())));
$requestRoute = null;
// Loop over each route and test to see if they are valid
foreach (self::$_routes as $route) {
if ($this->routeTest($requestUrl, $route)) {
$requestRoute = $route;
break;
}
}
// We have completed the route matching
// Finish the setup of the request object
Profiler::register('Core', 'Request');
if ($requestRoute) {
$_GET['controller'] = $route->endpoint['controller'];
$_GET['action'] = $route->endpoint['action'];
Request::setUrlFragments(str_replace($this->_routePath, '', Request::getUrl()));
} else {
Request::setUrlFragments(Request::getUrl(), true);
}
Profiler::deregister('Core', 'Request');
// Inform the event listener a request has been initialised
Event::trigger('initRequest', array('controller' => Request::get('controller'), 'action' => Request::get('action')));
// And stop the profiler
Profiler::deregister('Core', 'Router');
Profiler::deregister('Core', 'Front');
// And dispatch
Dispatcher::loadController(Request::get('controller'), Request::get('action'));
}