diff --git a/core/includes/form.inc b/core/includes/form.inc index af49de6..238f0be 100644 --- a/core/includes/form.inc +++ b/core/includes/form.inc @@ -123,6 +123,16 @@ * The unique string identifying the desired form. */ function _drupal_form_id($form_arg, &$form_state) { + // If the $form_arg is the name of a class, instantiate it. + if (is_string($form_arg) && class_exists($form_arg)) { + if (in_array('Drupal\Core\DependencyInjection\ContainerInjectionInterface', class_implements($form_arg))) { + $form_arg = $form_arg::create(\Drupal::getContainer()); + } + else { + $form_arg = new $form_arg(); + } + } + // If the $form_arg implements \Drupal\Core\Form\FormInterface, add that as // the callback object and determine the form ID. if (is_object($form_arg) && $form_arg instanceof FormInterface) { diff --git a/core/modules/action/lib/Drupal/action/ActionListController.php b/core/modules/action/lib/Drupal/action/ActionListController.php index b5577f1..405f224 100644 --- a/core/modules/action/lib/Drupal/action/ActionListController.php +++ b/core/modules/action/lib/Drupal/action/ActionListController.php @@ -7,14 +7,12 @@ namespace Drupal\action; -use Drupal\Component\Utility\String; use Drupal\Core\Action\ActionManager; use Drupal\Core\Entity\EntityControllerInterface; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Config\Entity\ConfigEntityListController; use Drupal\Core\Entity\EntityStorageControllerInterface; -use \Drupal\Core\Extension\ModuleHandlerInterface; -use Drupal\action\Form\ActionAdminManageForm; +use Drupal\Core\Extension\ModuleHandlerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** @@ -124,7 +122,7 @@ public function render() { if (!$this->hasConfigurableActions) { unset($build['action_table']['#header']['operations']); } - $build['action_admin_manage_form'] = drupal_get_form(new ActionAdminManageForm($this->actionManager)); + $build['action_admin_manage_form'] = drupal_get_form('Drupal\action\Form\ActionAdminManageForm'); return $build; } diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc index 5c4d550..4a84d5b 100644 --- a/core/modules/comment/comment.admin.inc +++ b/core/modules/comment/comment.admin.inc @@ -5,8 +5,6 @@ * Admin page callbacks for the Comment module. */ -use Drupal\comment\Form\ConfirmDeleteMultiple; - /** * Page callback: Presents an administrative comment listing. * @@ -24,7 +22,7 @@ function comment_admin($type = 'new') { $edit = $request->request->all(); if (isset($edit['operation']) && ($edit['operation'] == 'delete') && isset($edit['comments']) && $edit['comments']) { - return drupal_get_form(ConfirmDeleteMultiple::create(\Drupal::getContainer()), $request); + return drupal_get_form('Drupal\comment\Form\ConfirmDeleteMultiple'); } else { return drupal_get_form('comment_admin_overview', $type); diff --git a/core/modules/comment/lib/Drupal/comment/Form/ConfirmDeleteMultiple.php b/core/modules/comment/lib/Drupal/comment/Form/ConfirmDeleteMultiple.php index 08fb6d0..64b54d3 100644 --- a/core/modules/comment/lib/Drupal/comment/Form/ConfirmDeleteMultiple.php +++ b/core/modules/comment/lib/Drupal/comment/Form/ConfirmDeleteMultiple.php @@ -13,7 +13,6 @@ use Drupal\Core\DependencyInjection\ContainerInjectionInterface; use Drupal\Core\Form\ConfirmFormBase; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\Request; /** * Provides the comment multiple delete confirmation form. @@ -83,7 +82,7 @@ public function getConfirmText() { /** * {@inheritdoc} */ - public function buildForm(array $form, array &$form_state, Request $request = NULL) { + public function buildForm(array $form, array &$form_state) { $edit = $form_state['input']; $form['comments'] = array( diff --git a/core/modules/locale/lib/Drupal/locale/Controller/LocaleController.php b/core/modules/locale/lib/Drupal/locale/Controller/LocaleController.php index 4cc6dec..d9807eb 100644 --- a/core/modules/locale/lib/Drupal/locale/Controller/LocaleController.php +++ b/core/modules/locale/lib/Drupal/locale/Controller/LocaleController.php @@ -7,8 +7,6 @@ namespace Drupal\locale\Controller; use Drupal\Core\Controller\ControllerBase; -use Drupal\locale\Form\TranslateEditForm; -use Drupal\locale\Form\TranslateFilterForm; use Symfony\Component\HttpFoundation\RedirectResponse; /** @@ -51,8 +49,8 @@ public function checkTranslation() { */ public function translatePage() { return array( - 'filter' => drupal_get_form(TranslateFilterForm::create($this->container())), - 'form' => drupal_get_form(TranslateEditForm::create($this->container())), + 'filter' => drupal_get_form('Drupal\locale\Form\TranslateFilterForm'), + 'form' => drupal_get_form('Drupal\locale\Form\TranslateEditForm'), ); } diff --git a/core/modules/search/lib/Drupal/search/Form/SearchBlockForm.php b/core/modules/search/lib/Drupal/search/Form/SearchBlockForm.php index 1f5876b..d789f5b 100644 --- a/core/modules/search/lib/Drupal/search/Form/SearchBlockForm.php +++ b/core/modules/search/lib/Drupal/search/Form/SearchBlockForm.php @@ -7,21 +7,12 @@ namespace Drupal\search\Form; -use Drupal\Core\Form\FormInterface; use Drupal\Core\Form\FormBase; -use Symfony\Component\HttpFoundation\Request; /** * Builds the search form for the search block. */ -class SearchBlockForm extends FormBase implements FormInterface { - - /** - * The current request. - * - * @var \Symfony\Component\HttpFoundation\Request - */ - protected $request; +class SearchBlockForm extends FormBase { /** * {@inheritdoc} @@ -33,10 +24,7 @@ public function getFormID() { /** * {@inheritdoc} */ - public function buildForm(array $form, array &$form_state, Request $request = NULL) { - // Save the request variable for use in the submit method. - $this->request = $request; - + public function buildForm(array $form, array &$form_state) { $form['search_block_form'] = array( '#type' => 'search', '#title' => $this->t('Search'), @@ -58,8 +46,9 @@ public function submitForm(array &$form, array &$form_state) { // The search form relies on control of the redirect destination for its // functionality, so we override any static destination set in the request. // See http://drupal.org/node/292565. - if ($this->request->query->has('destination')) { - $this->request->query->remove('destination'); + $request = $this->getRequest(); + if ($request->query->has('destination')) { + $request->query->remove('destination'); } // Check to see if the form was submitted empty. diff --git a/core/modules/search/lib/Drupal/search/Plugin/Block/SearchBlock.php b/core/modules/search/lib/Drupal/search/Plugin/Block/SearchBlock.php index c977ba1..08652bb 100644 --- a/core/modules/search/lib/Drupal/search/Plugin/Block/SearchBlock.php +++ b/core/modules/search/lib/Drupal/search/Plugin/Block/SearchBlock.php @@ -8,10 +8,6 @@ namespace Drupal\search\Plugin\Block; use Drupal\block\BlockBase; -use Drupal\block\Annotation\Block; -use Drupal\Core\Annotation\Translation; -use Drupal\Core\Plugin\ContainerFactoryPluginInterface; -use Drupal\search\Form\SearchBlockForm; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Request; @@ -23,23 +19,7 @@ * admin_label = @Translation("Search form") * ) */ -class SearchBlock extends BlockBase implements ContainerFactoryPluginInterface { - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { - return new static($configuration, $plugin_id, $plugin_definition, $container->get('request')); - } - - /** - * Constructs a SearchBlock object. - */ - public function __construct(array $configuration, $plugin_id, array $plugin_definition, Request $request) { - parent::__construct($configuration, $plugin_id, $plugin_definition); - - $this->request = $request; - } +class SearchBlock extends BlockBase { /** * Overrides \Drupal\block\BlockBase::access(). @@ -52,7 +32,7 @@ public function access() { * {@inheritdoc} */ public function build() { - // Pass the current request to drupal_get_form for use in the buildForm. - return drupal_get_form(new SearchBlockForm(), $this->request); + return drupal_get_form('Drupal\search\Form\SearchBlockForm'); } + } diff --git a/core/modules/user/lib/Drupal/user/Controller/UserController.php b/core/modules/user/lib/Drupal/user/Controller/UserController.php index d1e0f3e..e3d7431 100644 --- a/core/modules/user/lib/Drupal/user/Controller/UserController.php +++ b/core/modules/user/lib/Drupal/user/Controller/UserController.php @@ -8,16 +8,13 @@ namespace Drupal\user\Controller; use Drupal\Component\Utility\Xss; -use Drupal\user\Form\UserLoginForm; +use Drupal\Core\Controller\ControllerBase; use Drupal\user\UserInterface; -use Symfony\Component\DependencyInjection\ContainerAware; -use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\HttpFoundation\Request; /** * Controller routines for user routes. */ -class UserController extends ContainerAware { +class UserController extends ControllerBase { /** * Returns the user page. @@ -25,20 +22,17 @@ class UserController extends ContainerAware { * Displays user profile if user is logged in, or login form for anonymous * users. * - * @param \Symfony\Component\HttpFoundation\Request $request - * The request object. - * * @return \Symfony\Component\HttpFoundation\RedirectResponse|array * Returns either a redirect to the user page or the render * array of the login form. */ - public function userPage(Request $request) { - global $user; + public function userPage() { + $user = $this->currentUser(); if ($user->id()) { - $response = new RedirectResponse(url('user/' . $user->id(), array('absolute' => TRUE))); + $response = $this->redirect('user.view', array('user' => $user->id())); } else { - $response = drupal_get_form(UserLoginForm::create($this->container), $request); + $response = drupal_get_form('Drupal\user\Form\UserLoginForm'); } return $response; } @@ -59,15 +53,12 @@ public function userTitle(UserInterface $user = NULL) { /** * Logs the current user out. * - * @param \Symfony\Component\HttpFoundation\Request $request - * The current request. - * * @return \Symfony\Component\HttpFoundation\RedirectResponse * A redirection to home page. */ - public function logout(Request $request) { + public function logout() { user_logout(); - return new RedirectResponse(url('', array('absolute' => TRUE))); + return $this->redirect(''); } /** diff --git a/core/modules/user/lib/Drupal/user/Plugin/Block/UserLoginBlock.php b/core/modules/user/lib/Drupal/user/Plugin/Block/UserLoginBlock.php index b3de132..8106ce3 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/Block/UserLoginBlock.php +++ b/core/modules/user/lib/Drupal/user/Plugin/Block/UserLoginBlock.php @@ -8,12 +8,6 @@ namespace Drupal\user\Plugin\Block; use Drupal\block\BlockBase; -use Drupal\block\Annotation\Block; -use Drupal\Core\Annotation\Translation; -use Drupal\Core\Plugin\ContainerFactoryPluginInterface; -use Drupal\user\Form\UserLoginForm; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\Request; /** * Provides a 'User login' block. @@ -23,55 +17,7 @@ * admin_label = @Translation("User login") * ) */ -class UserLoginBlock extends BlockBase implements ContainerFactoryPluginInterface { - - /** - * The DI Container. - * - * @var \Symfony\Component\DependencyInjection\ContainerInterface - */ - protected $container; - - /** - * The request object. - * - * @var \Symfony\Component\HttpFoundation\Request - */ - protected $request; - - /** - * Constructs a new UserLoginBlock. - * - * @param array $configuration - * A configuration array containing information about the plugin instance. - * @param string $plugin_id - * The plugin ID for the plugin instance. - * @param array $plugin_definition - * The plugin implementation definition. - * @param \Symfony\Component\DependencyInjection\ContainerInterface $container - * The DI Container. - * @param \Symfony\Component\HttpFoundation\Request $request - * The request object. - */ - public function __construct(array $configuration, $plugin_id, array $plugin_definition, ContainerInterface $container, Request $request) { - parent::__construct($configuration, $plugin_id, $plugin_definition); - - $this->container = $container; - $this->request = $request; - } - - /** - * {@inheritdoc} - */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { - return new static( - $configuration, - $plugin_id, - $plugin_definition, - $container, - $container->get('request') - ); - } +class UserLoginBlock extends BlockBase { /** * Overrides \Drupal\block\BlockBase::access(). @@ -84,7 +30,7 @@ public function access() { * {@inheritdoc} */ public function build() { - $form = drupal_get_form(UserLoginForm::create($this->container), $this->request); + $form = drupal_get_form('Drupal\user\Form\UserLoginForm'); unset($form['name']['#attributes']['autofocus']); unset($form['name']['#description']); unset($form['pass']['#description']);