2016-11-03 3 views
1

Ich benutze das Framework Phalcon. Ich versuche ein Formular zu erstellen, um einen Wert (eine ID namens "idcliente") von einer Tabelle (in mysql) namens cliente, die zwei Spalten hat: "idcliente" und "nombre". Mit diesem Wert möchte ich ein Feld (auch "idcliente") in einer anderen Tabelle namens Benutzer aktualisieren.Formular mit Dropdown funktioniert nicht auf Phalcon

Meine Form ist dies:

class AsignarclienteForm extends Form{ 

    public function initialize($entity = null, $options = null){   
     $idcliente = new Select('idcliente',[ 
      Cliente::find(), 
      "useEmpty" => true, 
      "emptyText" => "Please select...", 
      "using" => ["idcliente", "nombre"], 
      ]); 
     $idcliente->setLabel('ID Cliente'); 
     $idcliente->addValidators(array(
      new PresenceOf(array(
       'message' => 'idcliente is required' 
       )) 
      )); 
     $this->add($idcliente); 
    } 
} 

Und mein Controller:

public function asignarclienteAction(){ 
    $auth = $this->session->get('auth'); 
    $permiso = $auth['active']; 
    $id = $auth['id']; 
    if($permiso!='A'){return $this->forward('servicios/index');} 

    $form = new AsignarclienteForm; 

    if ($this->request->isPost()) { 
      $idcliente = $this->request->getPost('idcliente'); 
      $sql = "UPDATE Users SET idcliente = ?0 WHERE id = ?1"; 
      $this->modelsManager->executeQuery($sql, array(0 => $idcliente, 1 => $id)); 
      return $this->forward('admin/usuarios'); 
     } 

    $this->view->form = $form; 
} 

Und meine Ansicht:

 <div class="panel-body"> 
      {{ form('admin/asignarcliente/', 'id': 'asignarclienteForm', 'onbeforesubmit': 'return false') }} 
      <fieldset> 
       <div class="control-group"> 
       {{ form.label('idcliente', ['class': 'control-label']) }} 

        <div class="controls"> 
          {{ form.render('idcliente', ['class': 'form-control']) }} 
        </div> 
       </div> 
       <div class="form-actions"> 
        {{ submit_button('Asignar', 'class': 'btn btn-primary', 'onclick': 'return SignUp.validate();') }} 
       </div> 
      </fieldset> 
     </form> 
    </div> 

Ich habe die folgenden Fehler in der Website:

ID Cliente Catchable fatal error: Object of class Phalcon\Mvc\Model\Resultset\Simple could not be converted to string in C:\xampp\htdocs\OpinionZoom\cache\volt\c%%%%xampp%%htdocs%%opinionzoom%%app%%views%%admin%%asignarcliente.volt.php on line 31

Wo Linie 31 ist {{ form.render('idcliente', ['class': 'form-control']) }} auf meiner Ansicht

ich nicht genug Dokumentation zum Erstellen eines Formulars mit ausgewählten gefunden haben, trotz ich viele Formen geschaffen haben.

Wenn jemand mir helfen könnte, würde ich es sehr schätzen. Vielen Dank.

+1

Eine Frage: Warum tun Sie Schleife über Ihre Formularelemente aus Ihrer Sicht? Sie verwenden nicht die Variable 'element' in Ihrer Schleife. Jetzt geben Sie nur Ihr "idcliente" -Element x mal aus! Oder war das nur für Debugging-Zwecke? – Timothy

+0

@Timothy Gute Beobachtung. Ich habe ein Beispiel kopiert, das ich im Web gefunden habe. Aber du hast recht, in meinen anderen Formen habe ich keine for-Schleife. Danke: D Schon raus. –

Antwort

1

Ihre Elementdefinition in Ihrem Formular Asignarclienteform ist falsch. Der erste Parameter von Select muss eine Zeichenfolge (der Name Ihres Elements) sein. Der zweite Parameter übernimmt die Optionen Ihres Select-Elements.

// Select construct parameters 
Select(string $name, [object | array $options], [array $attributes]) 

zog ich idcliente aus dem Array in der ersten Parameterposition:

$idcliente = new Select('idcliente', Cliente::find(), [ 
    "useEmpty" => true, 
    "emptyText" => "Please select...", 
    "using"  => ["idcliente", "nombre"], 
]); 
+0

Danke! Jetzt hat sich der Fehler geändert: 'Behebbarer schwerer Fehler: Objekt der Klasse Phalcon \ Mvc \ Model \ Resultset \ Simple konnte nicht in C: \ xampp \ htdocs \ OpinionZoom \ cache \ volt \ c %%%% xampp% % htdocs %% meinungzoom %% app %% ansichten %% admin %% asignarcliente.volt.php on line 28' –

+0

Ich habe gerade meine Frage aktualisiert: D –

+0

Sind Sie sicher, dass Ihr Code und Sie Fehlermeldung auf dem neuesten Stand sind, weil es macht jetzt keinen Sinn ..? 'form' ist nicht vom Typ' Phalcon \ Mvc \ Model \ Resultset \ Simple'. Oder ist es? – Timothy