Какая альтернатива drupal_get_form('user_login')
. в Drupal 8?
Я использую следующий код в theme_name.theme, но он не работает.
// Include namespace for userLoginForm.
use \Drupal\Core\core\modules\user\src\Form;
function MYTHEMENAME_preprocess_page(&$variables) {
$form = UserLoginForm::create();
}
$variables['foo_form'] = \Drupal::formBuilder()->getForm('user_login');
не так?Вы можете создать форму в папке формы. И тогда вы можете позвонить в вашу форму в любом месте и передать параметр, как показано.
Drupal 7 :
$form = drupal_get_form('form_id',$parameter);
Drupal 8 :
$form = \Drupal::formBuilder()->getForm('Drupal\custom_module\Form\CustomModuleForm',$parameter);
источник
Существует два варианта возврата (D8) или рендеринга (D7) формы. Это
\Drupal::formBuilder()->getForm
и естьDrupal::formBuilder()->buildForm
. Я использую\Drupal::formBuilder()->getForm
как ниже.Используйте это, если вы не передаете параметр:
Используйте это, если вы передаете параметр:
Drupal 7 Эквивалент вышеупомянутого:
Приветствия. Дайте мне знать, если это поможет.
источник
Документация также допускает экземпляр класса. Так
тоже правильно.
источник
Предполагая, что ниже ваш класс формы
Сначала вы должны создать новый экземпляр из своего класса формы и передать его в getForm formBuilder.
источник
Хорошо, если все остальное терпит неудачу, это хитрая уловка, устанавливая новый объект состояния формы.
... тогда в вашей форме метод buildForm вы можете тогда ...
источник