如何在 Phalcon\Forms\Element 中实现单选按钮

Posted

技术标签:

【中文标题】如何在 Phalcon\\Forms\\Element 中实现单选按钮【英文标题】:How to implement radio button in Phalcon\Forms\Element如何在 Phalcon\Forms\Element 中实现单选按钮 【发布时间】:2017-01-21 20:20:44 【问题描述】:

我可能错了,但我确信这就是 Radios 的实施方式。例如,没有可能的方法来设置“已发布”和“未发布”的单选按钮,默认情况下会设置它们的值,因为您的模型中只有 $published,并且 Phalcon 不会通过以下方式搜索值名称属性, 例如如果你有:

$this->add(new Radio('published', array('name' => 'published', 'value' => 'Y')));
$this->add(new Radio('not_published', array('name' => 'published', 'value' => 'N')));

它只呈现最后一个单选按钮。这不是您对收音机所期望的行为!显然我们不能将两个无线电都命名为“已发布”,因为 Phalcon 不知道我们指的是哪一个,而且 Phalcon 仍然会使用这些名称来尝试获取默认值。

请建议如果您有任何解决方案。

【问题讨论】:

这是实现单选按钮时的常见问题 这在 Phalcon 3.0 中不是问题。我刚刚尝试复制您的代码 sn-p。 (两个单选按钮都呈现) 可能是我使用了不同版本的 Phalcon,谢谢您的信息。 【参考方案1】:

我面临同样的问题,我相信每个人都面临同样的问题。它似乎根本不可用。我希望有人会证明我错了,但我就是不知道如何制作一组两个相关的单选按钮。

// 将只渲染 NO 广播,因为它是名称“已发布”的最后一个元素?

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

希望这个解决方案能奏效。

【讨论】:

【参考方案2】:

我将它用于我的代码,因为它们不能解决 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);

```

【讨论】:

以上是关于如何在 Phalcon\Forms\Element 中实现单选按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在图像中找到明亮区域(以及如何在图像中找到阴影区域)

在QGIS中如何添加天地图的WMTS

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?