Estou interessado em incorporar um formulário de widget de campo fora do contexto de todo o formulário de edição do nó.
Eu exibi formulários completos no passado usando drupal_get_form, mas isso não parece se aplicar a formulários de campo solitários.
É possível exibir um formulário de widget de campo em funcionamento? Qual seria a melhor maneira de fazer isso?
Os widgets de campo e os formulários "normais" parecem muito semelhantes; portanto, se isso não for possível, o que seria necessário para "alterar" um formulário de widget para um formato normal?
Esta pergunta parece estar pedindo algo semelhante, mas não entendo a resposta. Essa resposta especifica o uso de hook_field_widget_form_alter ; o que eu não entendo é como exibir o formulário de campo e não como conectá-lo após a criação.
#access = FALSE
que parecia hacky nesse contexto.Eu estava usando intensamente a função sugerida pelo ttk, mas acho que uma atualização recente estragou tudo ...
Aqui está uma nova versão da solução anterior que funciona bem com o Drupal 7.22 e o ctools 7.x-1.3.
Assim, como no post anterior, você chama sua função personalizada assim:
Observe que o pacote configurável da entidade agora é um parâmetro. Fiz isso porque também estava usando esta função para editar usuários. Dessa forma, também pode ser usado para o termo de taxonomia ou qualquer outra entidade.
E o
my_field_attach_form
é definido como:Essa função me salvou muito tempo, espero que seja para você também!
fonte
Aqui está a solução usando o
ctools_field_invoke_field()
método Na sua função de formulário personalizado, adicione:onde a
my_field_attach_form
função é definida comoObserve que seu site precisa ter o ctools ativado. É uma pena que o Drupal não inclua uma função auxiliar como essa por padrão.
fonte
Não consegui fazer o método ctools funcionar e decidi fazê-lo dessa maneira.
Esse código estaria dentro de uma função de formulário, portanto $ form e $ form_state já seriam passados.
Primeiro, crie um nó vazio de um tipo que tenha o campo que você deseja processar.
Dupliquei as variáveis do formulário para não prejudicar o original.
Retire o campo que você está procurando e adicione-o ao formulário.
Usei esse método para renderizar o widget de seleção de taxonomia, o widget de caixas de seleção de taxonomia e o widget Seleção Hierárquica em um formulário personalizado. (O widget de preenchimento automático de taxonomia é processado, mas gera um erro ao enviar)
Finalmente renderize e imprima
fonte
ctools_field_invoke_field()
método descrito acima também funciona.Criei formulários a partir de campos indivisuais usando
isso deve retornar o formulário de widget necessário, que pode ser usado de qualquer forma como
Para obter os valores para o parâmetro 2 acima, use:
Para outros parâmetros, você pode verificar o link da API aqui
Isso retorna o formulário de widget padrão definido no campo tipos de conteúdo.
Espero que isso ajude alguém :)
fonte