Файл: concrete5.7.5.6/concrete/src/Routing/ControllerRouteCallback.php
Строк: 88
<?php
namespace ConcreteCoreRouting;
use ConcreteCoreSupportFacadeApplication;
use SymfonyComponentHttpKernel;
use Response;
use Request;
class ControllerRouteCallback extends RouteCallback
{
/**
* @param Request $request
* @param Route $route
* @param array $parameters
*
* @return Response
*/
public function execute(Request $request, Route $route, $parameters)
{
$resolver = Application::make('ConcreteCoreControllerApplicationAwareControllerResolver');
$callback = $resolver->getController($request);
$arguments = $resolver->getArguments($request, $callback);
$controller = $callback[0];
$method = $callback[1];
$controller->on_start();
$response = $controller->runAction($method, $arguments);
if ($response instanceof SymfonyComponentHttpFoundationResponse) {
// note, our RedirectResponse doesn't extend Response, it extends symfony2 response
return $response;
}
if ($response instanceof ConcreteCoreViewAbstractView) {
$content = $response->render();
} else {
$content = null;
$view = $controller->getViewObject();
if (is_object($view)) {
$view->setController($controller);
if (isset($view) && $view instanceof ConcreteCoreViewAbstractView) {
$content = $view->render();
}
}
}
$response = new Response();
$response->setContent($content);
return $response;
}
/**
* @return array
*/
public static function getRouteAttributes($callback)
{
$attributes = array();
$attributes['_controller'] = $callback;
$callback = new static($callback);
$attributes['callback'] = $callback;
return $attributes;
}
}