Ao ler a documentação da estrutura do Ajax, me deparei com a menção da #ajax
propriedade. Eu sei, ao vasculhar o código, existem outras dessas propriedades com sinais de hash na frente deles. O que o sinal de hash significa? Quais são essas propriedades?
22
Respostas:
Isso tem a ver com matrizes de renderização em geral, não é apenas específico para o AJAX ou a API do formulário (embora a API do formulário use matrizes de renderização exclusivamente para criar seu conteúdo).
Simplificando, chaves de matriz em uma matriz de renderização sem um
#
na frente do nome são vistas como filhos da matriz de renderização e, posteriormente, são renderizadas (recursivamente).Aqueles com um
#
na frente deles são vistos como metadados / variáveis para a matriz de renderização usar conforme necessário e não são renderizados.Os documentos da matriz de renderização (vinculados acima) na verdade colocam isso de maneira agradável e sucinta:
As
#
chaves são as 'dicas' das quais o parágrafo acima está falando, as não#
chaves são os dados aninhados.Eu recomendaria completamente que a página fosse lida, ele faz um bom trabalho para desmistificar toda a coisa da matriz de renderização e fornece exemplos de código.
Há também outro pequeno exemplo de explicação / código nos documentos Theming the page que podem ser úteis.
As matrizes de renderização são usadas em todo o Drupal (formulários, temas, marcação geral etc.), portanto, conhecer um pouco sobre elas ajudará muito no desenvolvimento futuro do Drupal.
fonte
A API do formulário usa um # na frente de todas as propriedades, para fazer uma distinção entre propriedades e elementos filhos. No código a seguir,
$form['choice_wrapper']['choice']
é um elemento filho, enquanto$form['choice_wrapper']['#tree']
é uma propriedade.Todas essas propriedades estão listadas na referência da API do formulário . Existem muitas propriedades, mas são todas sobre renderização, validação e envio.
O motivo para usar um prefixo para propriedades é poder filtrar rapidamente as propriedades dos elementos filhos, o que é útil quando eles precisam ser renderizados, por exemplo, com drupal_render () , que contém o código a seguir.
Se você observar element_children () , notará que o código para filtrar as propriedades é o seguinte.
fonte