Definir campos de formulario de forma programática
Un diseño contiene definiciones de campo estables más un árbol de referencia visual.
$layout = array(
'steps' => array(
array(
'id' => 'contact',
'title' => 'Contact',
'rows' => array(
array(
'id' => 'contact-row',
'columns' => array(
array(
'id' => 'contact-column',
'bootstrap_col_lg' => 12,
'field_ids' => array( 'contact_email', 'message' ),
),
),
),
),
),
),
'fields' => array(
'contact_email' => array(
'id' => 'contact_email',
'name' => 'contact_email',
'type' => 'email',
'label' => 'Email',
'required' => true,
),
'message' => array(
'id' => 'message',
'name' => 'message',
'type' => 'textarea',
'label' => 'How can we help?',
'required' => true,
),
),
);
Usa los tipos de campo de la referencia de campos de formulario pública. Mantén los IDs/nombres en minúsculas y estables. La etiqueta visible puede cambiar sin romper las etiquetas de combinación de las notificaciones.
Las columnas usan valores de anchura de estilo Bootstrap. Suministra solo las anchuras que el formulario necesita y conserva un orden lógico de origen/teclado. Un diseño visual de dos columnas debe contraerse en el orden de lectura previsto en pantallas pequeñas.
Cada ID de campo conecta la definición del campo con la lista field_ids de una columna y con el comportamiento posterior de envío/notificación. Defínelo una vez, haz referencia a él desde una única ubicación visual prevista y conserva el mismo valor después de la publicación. Una referencia ausente deja un campo definido sin renderizar; una referencia a un ID desconocido no puede producir una entrada utilizable.
Establece las propiedades relevantes para la validación en la definición del campo, en lugar de confiar en que una etiqueta o un marcador de posición impliquen un requisito. Trata las etiquetas como texto traducible para los visitantes y los IDs/nombres como contratos de integración estables.
No aceptes una matriz de diseño arbitraria de un visitante y la pases al renderizador. La integración propietaria define el esquema; la entrada del visitante solo suministra los valores de los campos.