2 votes

champ de référence sur le formulaire

Je crois que je ne comprends pas le champ de référence.

J'ai un formulaire simple

<?php

class page_prueba extends Page {
  function init(){
    parent::init();
    $p=$this;
    $f=$p->add('Form');
    $f->setSource('ticket');
    $f->addField('line','texto')->validateNotNull();
    $f->addField('text','detalle')->validateNotNull();
    $c=$p->add('Model_Usuario');
    $f->addField('reference','usuario')->setValueList($c)->validateNotNull();
  }
}

Et j'ai un modèle d'utilisateur

<?php
  class Model_Usuario extends Model_Table {
    public $entity_code='usuario';
    public $table_alias='u';
    function defineFields(){
      parent::defineFields();           
      $this->addField('nombre');
      $this->addField('password');
      $this->addField('email');
      $this->addField('telefono');
      $this->addField('descripcion');
      $this->addField('interno');
      $this->addField('esadmin');
    }
  }
?>

Lorsque j'exécute la page d'exemple, j'obtiens sur la liste déroulante (valeurs des options) affichées les valeurs d'id (clé primaire) mais ce que je veux voir sur cette liste déroulante est le champ du nom (nombre).

Peut-être que je rate quelque chose.

Toute aide serait appréciée.

Merci Alejandro

1voto

romaninsh Points 6048

Par défaut, le modèle affiche le champ "nom". Il existe plusieurs façons de le personnaliser

  1. définir le champ nom comme calculé
  2. redéfinir Model_Usuario::toStringSQL()
  3. Depuis la version 4.1, vous pouvez également définir le nom du champ par le biais d'une propriété.

vous devriez probablement aller après 2, voici un exemple :

public function toStringSQL($source_field, $dest_fieldname, $expr = 'name') {
    // return parent::tostringSQL($source_field,$dest_fieldname, 'date')

    return 'concat(name," ",surname) as ' . $dest_fieldname;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X