Issue #1987728 by Niklas Fiekas, vijaycs85: Convert language_test_subrequest() to a new style controller.

8.0.x
Alex Pott 2013-06-18 00:37:09 +02:00
parent 94b0b70f93
commit dec3e5c014
3 changed files with 50 additions and 36 deletions

View File

@ -99,38 +99,3 @@ function language_test_store_language_negotiation() {
function language_test_language_negotiation_method($languages) {
return 'it';
}
/**
* Implements hook_menu().
*/
function language_test_menu() {
$items = array();
$items['language_test/subrequest'] = array(
'page callback' => 'language_test_subrequest',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Page callback. Uses a subrequest to retrieve the 'user' page.
*/
function language_test_subrequest() {
$request = Request::createFromGlobals();
$server = $request->server->all();
if (basename($server['SCRIPT_FILENAME']) != basename($server['SCRIPT_NAME'])) {
// We need this for when the test is executed by run-tests.sh.
// @todo Remove this once run-tests.sh has been converted to use a Request
// object.
$server['SCRIPT_FILENAME'] = $server['SCRIPT_NAME'];
$base_path = ltrim($server['REQUEST_URI'], '/');
}
else {
$base_path = $request->getBasePath();
}
$subrequest = Request::create($base_path . '/user', 'GET', $request->query->all(), $request->cookies->all(), array(), $server);
return Drupal::service('http_kernel')->handle($subrequest, HttpKernelInterface::SUB_REQUEST);
}

View File

@ -11,3 +11,10 @@ language_test_theme_link_active_class:
_content: '\Drupal\language_test\Controller\LanguageTestController::themeLinkActiveClass'
requirements:
_access: 'TRUE'
language_test_subrequest:
pattern: '/language_test/subrequest'
defaults:
_controller: '\Drupal\language_test\Controller\LanguageTestController::testSubRequest'
requirements:
_access: 'TRUE'

View File

@ -9,17 +9,36 @@ namespace Drupal\language_test\Controller;
use Drupal\Core\Controller\ControllerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
/**
* Controller routines for language_test routes.
*/
class LanguageTestController implements ControllerInterface {
/**
* The HTTP kernel service.
*
* @var \Symfony\Component\HttpKernel\HttpKernelInterface
*/
protected $httpKernel;
/**
* Constructs a new LanguageTestController object.
*
* @param \Symfony\Component\HttpKernel\HttpKernelInterface $httpKernel
* An HTTP kernel.
*/
public function __construct(HttpKernelInterface $httpKernel) {
$this->httpKernel = $httpKernel;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static();
return new static($container->get('http_kernel'));
}
/**
@ -110,4 +129,27 @@ class LanguageTestController implements ControllerInterface {
);
}
/**
* Uses a sub request to retrieve the 'user' page.
*
* @return \Symfony\Component\HttpFoundation\Response
* The kernels response to the sub request.
*/
public function testSubRequest() {
$request = Request::createFromGlobals();
$server = $request->server->all();
if (basename($server['SCRIPT_FILENAME']) != basename($server['SCRIPT_NAME'])) {
// We need this for when the test is executed by run-tests.sh.
// @todo Remove this once run-tests.sh has been converted to use a Request
// object.
$server['SCRIPT_FILENAME'] = $server['SCRIPT_NAME'];
$base_path = ltrim($server['REQUEST_URI'], '/');
}
else {
$base_path = $request->getBasePath();
}
$sub_request = Request::create($base_path . '/user', 'GET', $request->query->all(), $request->cookies->all(), array(), $server);
return $this->httpKernel->handle($sub_request, HttpKernelInterface::SUB_REQUEST);
}
}