Qual é a alternativa para drupal_get_form('user_login')
. no Drupal 8?
Estou usando o seguinte código no theme_name.theme, mas não funciona.
// 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');
seja?Você pode criar um formulário na pasta de formulários. E então você pode chamar seu formulário em qualquer lugar e passar o paramater como mostrado.
Drupal 7 :
$form = drupal_get_form('form_id',$parameter);
Drupal 8 :
$form = \Drupal::formBuilder()->getForm('Drupal\custom_module\Form\CustomModuleForm',$parameter);
fonte
Existem duas opções para retornar (D8) ou renderizar (D7) um formulário. Estes são
\Drupal::formBuilder()->getForm
eDrupal::formBuilder()->buildForm
. Eu uso\Drupal::formBuilder()->getForm
como abaixo.Use isto se você não estiver passando um parâmetro:
Use isso se você estiver passando um parâmetro:
Drupal 7 Equivalente ao acima:
Felicidades. Deixe-me saber se isso ajuda.
fonte
A documentação também permite uma instância da classe. então
também está correto.
fonte
Supondo que a seguir seja sua classe de formulário
Você precisa criar uma nova instância da sua classe de formulário primeiro e passá-la para o getForm do formBuilder.
fonte
Ok, se tudo mais falhar aqui, é um truque sorrateiro, definindo um novo objeto de estado do formulário.
... então, no método de formulário buildForm, você pode ...
fonte