如何在 Phalcon\Forms\Element 中实现单选按钮
How to implement radio button in Phalcon\Forms\Element
我可能是错的,但我确信这就是 Radios 的实现方式。没有可能的方法,比如说,为 'published' 和 'not published' 设置默认值的单选按钮,因为你的模型中只有 $published,而 Phalcon 不搜索对于按名称属性的值,
例如如果你有:
$this->add(new Radio('published', array('name' => 'published', 'value' => 'Y')));
$this->add(new Radio('not_published', array('name' => 'published', 'value' => 'N')));
它只呈现最后一个单选按钮。这不是您期望的收音机行为!显然我们不能命名两个收音机 'published' 因为 Phalcon 不知道我们指的是哪个,Phalcon 仍然会使用这些名称来尝试获取默认值。
如果你有解决办法,请提出建议。
我面临同样的问题,我相信每个人都面临同样的问题 proble.it 似乎根本无法使用。我希望有人能证明我是错的,但我就是不知道如何制作一组两个相关的单选按钮。
// 将只呈现 NO radio,因为它是名称的最后一个元素 "published"?
use Phalcon\Forms\Element\Radio;
$yes = new Radio("published", array("id" => "myYes", "value" => 1));
$yes->setLabel("YES!");
$no = new Radio("published", array("id" => "myNo", "value" => 2));
$no->setLabel("NO!");
请问,我们如何渲染多个单选按钮?当然我们需要这个 Phalcon\Forms\Element\Radio,因为我们想要附加验证、过滤器..
这是我的解决方案:
$attr = array(
'name' => 'published'
);
$yes = new \Phalcon\Forms\Element\Radio("Yes", $attr);
$no = new \Phalcon\Forms\Element\Radio("No", $attr);
$this->add($yes);
$this->add($no);
希望这个解决方案能奏效。
我将它用于我的代码,因为它们没有解决 phalcon 问题。
```
$attr = ['value' => Employee::GENDER_MALE, 'name' => 'gender'];
if (!empty($entity) && $entity->getGender() == Employee::GENDER_MALE || $this->request->getPost('gender') == Employee::GENDER_MALE) {
$attr += ['checked' => 'checked'];
}
$el = new Radio('genderMale', $attr);
$el->setLabel(t('Male'));
$this->add($el);
$attr = ['value' => Employee::GENDER_FEMALE, 'name' => 'gender'];
if (!empty($entity) && $entity->getGender() == Employee::GENDER_FEMALE || $this->request->getPost('gender') == Employee::GENDER_FEMALE) {
$attr += ['checked' => 'checked'];
}
$el = new Radio('genderFemale', $attr);
$el->setLabel(t('Female'));
$this->add($el);
```
我可能是错的,但我确信这就是 Radios 的实现方式。没有可能的方法,比如说,为 'published' 和 'not published' 设置默认值的单选按钮,因为你的模型中只有 $published,而 Phalcon 不搜索对于按名称属性的值, 例如如果你有:
$this->add(new Radio('published', array('name' => 'published', 'value' => 'Y')));
$this->add(new Radio('not_published', array('name' => 'published', 'value' => 'N')));
它只呈现最后一个单选按钮。这不是您期望的收音机行为!显然我们不能命名两个收音机 'published' 因为 Phalcon 不知道我们指的是哪个,Phalcon 仍然会使用这些名称来尝试获取默认值。
如果你有解决办法,请提出建议。
我面临同样的问题,我相信每个人都面临同样的问题 proble.it 似乎根本无法使用。我希望有人能证明我是错的,但我就是不知道如何制作一组两个相关的单选按钮。
// 将只呈现 NO radio,因为它是名称的最后一个元素 "published"?
use Phalcon\Forms\Element\Radio;
$yes = new Radio("published", array("id" => "myYes", "value" => 1));
$yes->setLabel("YES!");
$no = new Radio("published", array("id" => "myNo", "value" => 2));
$no->setLabel("NO!");
请问,我们如何渲染多个单选按钮?当然我们需要这个 Phalcon\Forms\Element\Radio,因为我们想要附加验证、过滤器..
这是我的解决方案:
$attr = array(
'name' => 'published'
);
$yes = new \Phalcon\Forms\Element\Radio("Yes", $attr);
$no = new \Phalcon\Forms\Element\Radio("No", $attr);
$this->add($yes);
$this->add($no);
希望这个解决方案能奏效。
我将它用于我的代码,因为它们没有解决 phalcon 问题。
```
$attr = ['value' => Employee::GENDER_MALE, 'name' => 'gender'];
if (!empty($entity) && $entity->getGender() == Employee::GENDER_MALE || $this->request->getPost('gender') == Employee::GENDER_MALE) {
$attr += ['checked' => 'checked'];
}
$el = new Radio('genderMale', $attr);
$el->setLabel(t('Male'));
$this->add($el);
$attr = ['value' => Employee::GENDER_FEMALE, 'name' => 'gender'];
if (!empty($entity) && $entity->getGender() == Employee::GENDER_FEMALE || $this->request->getPost('gender') == Employee::GENDER_FEMALE) {
$attr += ['checked' => 'checked'];
}
$el = new Radio('genderFemale', $attr);
$el->setLabel(t('Female'));
$this->add($el);
```