2016-12-20 6 views
0

Ich bin ein Formular erstellen, die eine Liste der Schlüsselwörter aus einer Datenbank liest. Das Modell ist einfach: Jeder Benutzer hat unterschiedliche Schlüsselwörter in der Datenbank zugeordnet, so dass ich die Anzahl nicht kenne.Erstellen von Formular mit Kontrollkästchen in Phalcon

In dem Formular möchte ich alle zugeordneten Schlüsselwörter des Benutzers mit einer Checkbox-Liste, so dass der Benutzer entscheiden kann, welches Stichwort speichern in einer speziellen Gruppe. Natürlich möchte ich den Namen des Keywords rendern, aber ich möchte die "ID" davon erhalten.

Ich finde keine Dokumentation davon. Ich habe gerade das typische gefunden:

in das Formular, aber es ist nutzlos. In der Ansicht schrieb ich

<div class="control-group"> 
     {{ form.label('keywords', ['class': 'control-label']) }} 
     <div class="controls"> 
      {{ form.render('keywords', ['class': 'form-control']) }} 
     </div> 
</div> 

Und ich sehe ein Kontrollkästchen (mit Wert 1). Ich stelle mir vor, die Lösung sollte etwas wie die SELECT (die ich in einer anderen Form verwende) sein. Etwas wie:

$idkeyword = new Select('keyword', 
     Keyword::find($string), [ 
     "useEmpty" => true, 
     "emptyText" => "Por favor selecciona...", 
     "using" => ["idkeyword", "trackeable"], 
     ]); 
$idkeyword->setLabel('Keyword'); 
$idkeyword->addValidators(array(
     new PresenceOf(array(
      'message' => 'idkeyword requerida' 
      )) 
     )); 
$this->add($idkeyword); 

Nach Ansicht Ich mag wäre so etwas wie haben:

<input type="checkbox" name="chk_group" value="1" />Keyword 1<br /> 
<input type="checkbox" name="chk_group" value="2" />Keyword 2<br /> 
<input type="checkbox" name="chk_group" value="3" />Keyword 3<br /> 

Wenn "Keyword X" in der Datenbank und "X" ist die id.

Ich würde mich freuen, irgendeine Hilfe zu hören. Ich hoffe, meine Frage ist gut formuliert. Wenn nicht, werde ich alle Kommentare akzeptieren. Vielen Dank.

Antwort

1

Die Phalcon\Forms\Element\Check ist für eine einzelne Checkbox gemeint, also wenn Sie es für mehrere Kontrollkästchen verwenden möchten, werden Sie eine Schleife schreiben müssen:

// You should get these options from the database 
$options = [1 => 'Keyword 1', 2 => 'Keyword 2', 3 => 'Keyword 3']; 

foreach($options as $key => $value) 
{ 
    // Create a checkbox for each option 
    $keywords = new Check('keywords'.$key, [ 
     'name' => 'chk_group', 
     'class' => 'form-control', 
     'value' => $value 
    ]); 

    // Create a label for each option so the user can click on this 
    $keywords->setLabel($value); 

    $this->add($keywords); 
} 

dann in der Ansicht:

{% for element in form %} 
    {{ element.label(['class': 'control-label']) }} 
    {{ element.render() }} 
{% endfor %} 
Verwandte Themen