Para algunos requisito necesito para pasar la información adicional a presentar controlador. En forma de api, mientras que la definición de personalizado enviar controlador de

$additional_args = array();
$form['#submit'][] = 'my_submit_handler'

Espero controlador de envío como

function my_submit_handler($form, &$form_state, $additional_args){

OriginalEl autor Shoaib Nawaz | 2010-08-13

3 Comentarios

  1. 14

    El controlador de envío es llamado por el drupal fapi, por lo que no puede hacer algo como eso. En lugar de lo que puede hacer, es agregar lo que usted necesita, ya sea para la $form, o a la $form_state. Los enfoques habituales es:

    • Añadido un campo al formulario, escriba el valor a almacenar el valor. No hagas esto si tienes el valor en la definición del formulario.

      $form['store'] = array(
        '#type' => 'value',
        '#value' => $value
      );

      Este estará disponible en $form_state['values']['store'].

    • Añadir el valor a $form_state['storage'], de hecho si las variables de la validación de la manija de la que desea transferir a su controlador de envío:

      //Validation.
      $form_state['storage']['value'] = $value;
      
      ...
      
      //Submit
      $value = $form_state['storage']['value'];
      //Need to unset stored values when not used anymore.
      unset($form_state['storage']['value']);
    Tenga en cuenta que como de Drupal 6, también puede almacenar simplemente arbitrario de variables en $formulario[‘#foo’] en su lugar, mientras ‘#foo’ no entre en conflicto con cualquier otra propiedad interna de la Forma de la API.

    OriginalEl autor googletorp

  2. 9

    Drupal 7: argumentos Personalizados se propaga automáticamente troug $form_state[‘build_info’][‘args’]
    Esto se dijo en http://api.drupal.org/api/drupal/includes!el formulario.inc/función/drupal_get_form/7

    Ex:

    hook_form($form, &$form_state, $myAdditionnalArg) {...}

    A continuación, en

    hook_form_submit($form, &$form_state) {


    //$form_state['build_info']['args'] es una matriz que contiene en el índice 0, el valor del argumento $myAdditionnalArg

    OriginalEl autor gipein

  3. 4

    Como se informó en $formulario[‘#submit’] y $formulario[‘#validar’] y $formulario[‘#proceso’] ya no admiten parámetros personalizados, la forma sugerida para pasar parámetros a una presentación de controlador de conjunto, como en la muestra de código es utilizar un código similar al siguiente:

    $form['#first_paramater'] = $value;
    $form['#submit'][] = 'my_submit_handler';

    El controlador de recuperar el valor de $form['#first_paramater'].
    Notar que, en lugar de #first_paramater, el código puede utilizar una cadena diferente, pero se debe comenzar con #.

    Normalmente no es necesario para establecer una comunicación controlador como hace el código, pero hay algunos casos donde es necesario, como para modificar un formulario creado por otro módulo, o para configurar una presentación de controlador para cada uno de los botones de presentación presentes en una forma.

    drupal_retrieve_form() guarda los parámetros pasados a la forma de construir controlador en $form['#parameters'] que contiene:

    • $form_id
    • $form_state
    • parámetros que se pasan al constructor de formulario

    OriginalEl autor kiamlaluno

Dejar respuesta

Please enter your comment!
Please enter your name here