Phalcon - несколько флажков в формах

По сути, мне нужно сериализовать несколько флажков перед их сохранением в базе данных и десериализовать перед отображением формы.

<input type="checkbox" name="list[option1]" value="1">
<input type="checkbox" name="list[option2]" value="1">
<input type="checkbox" name="list[option3]" value="1">

Может ли кто-нибудь указать мне правильное направление, пожалуйста?

Я пробовал следующий код для создания флажков, но он не работает после запроса. Выбранные параметры не заполняются в форме (другие поля в порядке)

<?php
$form->bind($_POST, $entity);
....
foreach ($list as $key => $option) {
  $form->add(new Check("list[$key]", array('value' => 1)));
}

Я полагаю, что та же проблема существует с использованием полей выбора с несколькими вариантами выбора.


person WooDzu    schedule 01.11.2013    source источник


Ответы (2)


Я думаю, у вас опечатка. Пытаться:

<?php
$form->bind($_POST, $entity);
....
foreach ($list as $key => $option) {
  $form->add(new Check($list[$key], array('value' => 1)));
}

Кстати, для создания HTML.

<?php

echo Phalcon\Tag::checkField(array($list[$key], "value" => "1"));
person Hassan    schedule 29.04.2014
comment
Это не опечатка. Мне намеренно нужно отправить выбранные флажки в виде массива POST - person WooDzu; 30.04.2014

Вы можете использовать мой код Fdola.com. Использовать

<?php 
$list_module = new \App\Vendor\Fdola\Forms\CheckBoxList('list_module', ['a' => 'A', 'b' => 'B'], ['a'], ['class' => 'checkBoxList']);
$list_module->setLabel('Module hiển thị banner:');
$list_module->addValidators([
    new \Phalcon\Validation\Validator\PresenceOf([
        'message' => '<b>:field</b> không được phép rỗng'
    ])
]);
$this->add($list_module);

<?php
/**
 * Created by PhpStorm.
 * User: thanhansoft
 * Date: 4/29/2016
 * Time: 4:21 PM
 */

namespace App\Vendor\Fdola\Forms;

use Phalcon\Http\Request;
use Phalcon\Tag;

class CheckBoxList extends \Phalcon\Forms\Element {
    private $_data;
    private $_dataOld;

    public function __construct($name, $data, $dataOld = null, $attribute = null) {
        $this->_data = $data;
        $this->_dataOld = $dataOld;
        parent::__construct($name, $attribute);
    }

    public function render($attribute = null) {
        $get_value = $this->getValue();
        if ($get_value) {
            $data = $get_value;
        } else {
            $data = $this->_dataOld;
        }

        $tag = new Tag();
        $string = '';
        if ($this->_data) {
            foreach ($this->_data as $key => $value) {
                $arr = ['id' => $this->_name . '-' . $key, 'name' => $this->_name . '[]', 'value' => $key];

                if ($data && in_array($key, $data)) {
                    $arr['checked'] = 'checked';
                }

                $string .= '<label>' . $tag::checkField($arr) . ' ' . $value . '</label>';
            }
        }

        if (isset($this->_attributes['class'])) return '<div class="' . $this->_attributes['class'] . '">' . $string . '</div>';
        return $string;
    }
}
person Thanhansoft    schedule 02.02.2017