2016-12-20 2 views
0

Я создаю форму, которая считывает список ключевых слов из базы данных. Модель проста: каждый пользователь имеет разные ключевые слова, связанные с базой данных, поэтому я не знаю их числа.Создание формы с флажками в Phalcon

В форме я хочу отобразить все связанные с пользователем ключевые слова с помощью флажка, чтобы пользователь мог решить, какое ключевое слово сохранить в специальной группе. Конечно, я хочу отобразить имя ключевого слова, но я хочу получить его «id».

Я не располагаю документацией по этому вопросу. Я только что нашел типичный:

$keywords = new Check('keywords', array(
     'value' => '1' 
    )); 
$keywords->setLabel('Keywords'); 
$this->add($keywords); 

положить в форму, но это бесполезно. В поле зрения я написал

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

И я вижу флажок (со значением 1). Я предполагаю, что решение должно быть чем-то вроде SELECT (которое я использую в другой форме). Что-то вроде:

$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); 

В представлении я хотел бы иметь что-то вроде:

<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 /> 

Когда «Ключевое слово X» находится в базе данных и «X» является его идентификатор.

Я был бы рад услышать любую помощь. Надеюсь, мой вопрос хорошо сформулирован. Если нет, я буду принимать все комментарии. Благодарю.

ответ

1

Phalcon\Forms\Element\Check предназначен для одного флажка, если вы хотите использовать его для нескольких флажков, вам придется написать цикл:

// 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); 
} 

затем в представлении:

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