Mientras leía la documentación del marco de Ajax me encontré con la mención de la #ajax
propiedad. Sé por leer el código que hay otras de estas propiedades con signos hash delante de ellas. ¿Qué significa el signo hash? ¿De qué se tratan estas propiedades?
22
Respuestas:
Esto tiene que ver con las matrices de renderizado en general, no solo es específico para AJAX o la API de formulario (aunque la API de formulario utiliza matrices de renderizado exclusivamente para construir su contenido).
En pocas palabras, las teclas de matriz en una matriz de representación sin
#
delante del nombre se ven como elementos secundarios de la matriz de representación y, posteriormente, se representan a sí mismas (recursivamente).Aquellos con un
#
frente de ellos son vistos como metadatos / variables para que la matriz de renderización los use según sea necesario, y no se representan ellos mismos.Los documentos de la matriz de renderizado (vinculados a lo anterior) en realidad ponen esto agradable y sucintamente:
Las
#
claves son las "pistas" de las que habla el párrafo anterior, las no#
claves son los datos anidados.Recomiendo encarecidamente leer esa página, hace un buen trabajo de desmitificación de todo el conjunto de renderizado y proporciona ejemplos de código.
También hay otro pequeño ejemplo de explicación / código en Theming the page docs que podría ser útil.
Las matrices de renderizado se utilizan por todas partes en Drupal (formularios, temas, marcado general, etc.), por lo que conocer un poco sobre ellas ayudará mucho con el desarrollo futuro de Drupal.
fuente
El formulario API utiliza un # delante de todas las propiedades, para hacer una distinción entre propiedades y elementos secundarios. En el siguiente código,
$form['choice_wrapper']['choice']
es un elemento hijo, mientras que$form['choice_wrapper']['#tree']
es una propiedad.Todas esas propiedades se enumeran en la referencia de API de formulario . Hay muchas propiedades, pero se trata de renderizar, validar y enviar.
La razón para usar un prefijo para las propiedades es poder filtrar rápidamente las propiedades de los elementos secundarios, lo cual es útil cuando se necesitan renderizar, por ejemplo con drupal_render () , que contiene el siguiente código.
Si observa element_children () , notará que el código para filtrar las propiedades es el siguiente.
fuente