2009-12-02 39 views
5

CCK para Drupal tiene la práctica función de permitir que un único campo CCK acepte valores múltiples mediante el botón "agregar otro elemento" que da como resultado una matriz de datos en el nodo.'agregar otro elemento' en formularios Drupal no CCK

Me pregunto si hay alguna forma fácil de adaptar esto para un formulario que no sea CCK al que llamaría al drupal_get_form. Prefiero no tener que reinventar la rueda con técnicas de forma de varios pasos.

¿Alguien ha hecho esto?

Respuesta

6

Sería bueno si hubieran incluido un ejemplo más reducido, pero this Introduction to AHAH in Drupal, junto con this post on adding dynamic form elements using AHAH debería cubrir prácticamente todo lo que necesita (que, lamentablemente, es bastante).

La manera en que CCK hace esto (principalmente en content_add_more_js() en content.node_form.inc) es un poco más intrincada, ya que deben tener en cuenta la generalización para diferentes tipos de campos, así como agregar algunas cosas adicionales para permitir tablesort Arrastrar & Soltar la funcionalidad. Así que a menos que necesite lo último, prefiero no usarlo como ejemplo, ya que se vuelve un poco confuso;)

2

Solo un trozo de una respuesta, lo siento. Si nadie más te dará una mejor respuesta y tengo tiempo, mañana elaboraré un poco más.

Creo que la funcionalidad se realiza adjuntando un comportamiento drupal (desde la biblioteca Drupal estándar js) al campo que está considerando. Si estoy equivocado, entonces es simplemente una función jQuery "ad-hoc".

Sin embargo, esa es la parte fácil! ;) El truco, es que la funcionalidad se logra a través de AJAX y no simplemente generando un campo de formulario adicional del lado del cliente. Esto es así porque la API de formulario debe regenerar el formulario por completo, de lo contrario, en el momento de la presentación, se ignorarán simplemente los campos adicionales que no se enviaron originalmente al navegador (esto es para prevenir la inyección).

¡HTH al menos un poco! Perdón por ser tan conciso.

Cuestiones relacionadas