AYUDA: InvalidArgumentException</em>: Placeholders must have a trailing [] if they are to be expanded with an array of values

132 views
Skip to first unread message

angel....@globant.com

unread,
Nov 6, 2018, 12:35:41 PM11/6/18
to Drupal Colombia

He estado presentando un error al enviar mi formulario drupal , el codigo esta diseñado para insertarme los valores de un campo tipo select en mi base de datos. No se en que estoy fallando pero llevo mas de una semana intentando encontrar respuesta y no he podido..

Anexo el codigo de mi error..


 public function buildForm(array $form, FormStateInterface $form_state) {


  $form['WishForm'] = [

    '#type' => 'fieldset',

    '#title' => $this->t('Favorites'),

  ];


  $form['WishForm']['field_nodes'] = [

    '#type' => 'select',

    '#multiple' => TRUE,


    '#attributes'=> array(

      'style'=>'width:600px',

    ),


   '#options'=>$this->GetData(),


   ];


   $form['WishForm']['actions'] = [

      '#type' => 'submit',

      '#value' => $this->t('Save'),

    ];


  return $form;

  }


 public function submitForm(array &$form, FormStateInterface $form_state) {


    $connection = \Drupal::database();

    /**
    * Load the current User.
    * Use \Drupal\user\Entity\User::load.
    */

    $user = \Drupal\user\Entity\User::load(\Drupal::currentUser()->id());

    $uid = $user->get('uid')->value;
    $nid= $form_state->getValue('field_nodes');


    // /**
    // * Query to verify if the serie is save in the list yet.
    // */

    $query = $connection->query('SELECT * FROM WishList WHERE nid = :nid AND uid = :uid',
      [':nid' => $nid , ':uid' => $uid]);
    

    $verifyQ = $query->fetchAssoc();

    if ($verifyQ['nid'] == $nid && $verifyQ['uid'] == $uid) {

      drupal_set_message(t('The serie is in the list yet!.'));

    } else {
      
      $result = $connection->insert('WishList')->fields([
      'id' =>  NULL,
      'uid' => $uid,
      'nid' => $nid,

      ])->execute();
    }

    if ($result) {
      drupal_set_message(t('Serie added to the list!'));
    } else {
      drupal_set_message(t('Error, Please try it again later'));
    }    
  }


Les agradezo su ayuda, soy nuevo en drupal , y he estado buscando la solucion por todas partes pero no me funciona aun...


Diego Luis Restrepo Urrea

unread,
Nov 6, 2018, 11:13:34 PM11/6/18
to drupal-...@googlegroups.com
Hola Angel!

El codigo parece estar bien. Mis recomendaciones son:

1. Apoyate en tu equipo local, si trabajas en Globant, se que alla hay excelentes Drupaleros que te pueden apoyar de primera mano, aqui tambien te podemos dar una mano, pero es mas facil con los que estan cerca a ti que son los que mas les interesa que los proyectos salgan adelante.
2. Cuando algo falla y genera un error debes agregar ese error compo parte del ticket.
3. Tu codigo se ve desordenado en el email, debes buscar que este sea mas facil de leer, esto tanto para cumplir con standares de Drupal como para facilitarle la vida a otros programadores, recuerda que uno escribe codigo para que lo lean otros humanos y lo interpreten las maquinas.
4. Usa XDebug para hacerle seguimiento al flujo del envio del email https://xdebug.org/, si no sabes como usarlo alguien de tu equipo puede ayudarte, busca ayuda. Si esto es complicado por alguna razon, puedes usar funciones como Kint que esta en el module DEVEL, KINT es pesado, hay otros (no recuerdo en este momento) mas ligeros que te pueden permitir imprimir mensajes de forma mas presentable que usar los viejos y conocidos var_dump o print_r  o similares.
5. Busca un ejercicio en internet que ya funcion y modificalo parcialmente para irlo evolucionando hasta donde necesitas.
6. Trata en lo posible usar las entidades que te suministra Drupal por defecto, esto te ahorrara dolores de cabeza. Si no puedes, usa un modulo como este https://www.drupal.org/project/eck, no estoy completamente seguro pero creo que este te puede ayudar a crear entidades personalizadas. Como ultima opcion crea tus propios esquemas (Schemes), el acceso tan directo a la base de datos puede saltarse un par de procesos cheveres de Drupal como el de generacion de caches.

Saludos,


The information contained in this e-mail may be confidential. It has been sent for the sole use of the intended recipient(s). If the reader of this message is not an intended recipient, you are hereby notified that any unauthorized review, use, disclosure, dissemination, distribution or copying of this communication, or any of its contents, is strictly prohibited. If you have received it by mistake please let us know by e-mail immediately and delete it from your system. Many thanks.

 

La información contenida en este mensaje puede ser confidencial. Ha sido enviada para el uso exclusivo del destinatario(s) previsto. Si el lector de este mensaje no fuera el destinatario previsto, por el presente queda Ud. notificado que cualquier lectura, uso, publicación, diseminación, distribución o copiado de esta comunicación o su contenido está estrictamente prohibido. En caso de que Ud. hubiera recibido este mensaje por error le agradeceremos notificarnos por e-mail inmediatamente y eliminarlo de su sistema. Muchas gracias.


--
Has recibido este mensaje porque estás suscrito al grupo "Drupal Colombia" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a drupal-colomb...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.


--
Diego Luis Restrepo Urrea
Ing. Sistemas y Computación
mobile: (+57) 315 23 77 683
Reply all
Reply to author
Forward
0 new messages