Pergunta

Eu notei isso no seu arquivo de tema de formulário, o que for forma.tpl.php, quando você omita

<?php drupal_render($form); ?> 

As únicas partes do formulário que são renderizadas é o que você especificou - para que eu também possa omitir todas essas linhas:

<?php $form['title']['#access'] = FALSE; ?>
<?php $form['body']['#access'] = FALSE; ?>
<?php $form['menu']['#access'] = FALSE; ?>
<?php $form['revision_information']['#access'] = FALSE; ?>
<?php /* ... etc ... */ ?>

Eu queria fazer isso para que, quando instalar módulos (digamos, livros), não preciso me preocupar em voltar a todos os meus formulários personalizados e, em seguida, adicionar o correspondente "ocultar esta seção!" linha:

<?php $form['book']['#access'] = FALSE; ?>

Tudo bem omitir drupal_render ($ form)? Submissão, validação, etc, estará bem?

Foi útil?

Solução

A linha que você pede, renderiza todos os itens que ainda não foram renderizados. Isso provavelmente sempre incluirá o token de formulário um ID exclusivo para o formulário. Sem ele, o formulário não pode validar. Isso pode causar muitos problemas se removido.

Se você deseja alterar o formulário que deve usar hook_form_alter(). Ele permite que você com base no ID do formulário para remover/adicionar/alterar itens de formulário. Esta é a maneira Drupal, pois permite que outros módulos alterem as formas quando necessário.

Outras dicas

Bem, qualquer tema que você está usando parece ser um pouco ferrado, porque todas as linhas de código listadas acima não devem estar na camada de tema.

Mas para responder à sua pergunta, removendo drupal_render($form) Provavelmente fará com que todo o seu formulário não apareça. Portanto, não, a submissão e a validação e isso não funcionará, e o formulário provavelmente nem aparecerá na página quando renderizado em um navegador.

A resposta curta é definitivamente não, você não pode omitir drupal_render ($ form), porque contém informações essenciais para o processamento correto do formulário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top