gpt4 book ai didi

forms - 如何在 Phalcon 表单中使用复选框?

转载 作者:行者123 更新时间:2023-12-01 07:42:46 24 4
gpt4 key购买 nike

我正在使用 Phalcon 创建一个表单上面有一个复选框。我使用此代码在我的 PagesForm.php 文件中创建复选框

$this->add(new Check('usesLayout'));

然后在我看来我有

{{ form.render("usesLayout") }}

但是,如果未选中该复选框,则 Phalcon 会提示 usesLayout is required

View 生成的html代码是

<input type="checkbox" id="usesLayout" name="usesLayout" value="1" checked="checked" />

创建带有复选框的 Phalcon 表单以使其接受选中和未选中的正确方法是什么?

期望的结果

回顾使用CakePHP时制作的表格后html 输出是

<input type="hidden" name="usesLayout" id="usesLayout_" value="0" />
<input type="checkbox" name="usesLayout" id="usesLayout" value="1" checked="checked" />

这很好用,所以我正在寻找类似的东西。

当前的解决方法

在对this question的最终响应中修改代码后我目前有这个解决方法(我使用这个而不是 Phalcon\Forms\Element\Check)

namespace Armaware\InBrowserDev\Forms\Element;

use Phalcon\Forms\Element\Check as PhalconCheck;

class Check extends PhalconCheck
{
/**
* Renders the element widget returning html
*
* @param array|null $attributes Element attributes
*
* @return string
*/
public function render($attributes = null)
{
$attrs = array();

if (!is_null($attributes)) {
foreach ($attributes as $attrName => $attrVal) {
if (is_numeric($attrName) || in_array($attrName, array('id', 'name', 'placeholder'))) {
continue;
}

$attrs[] = $attrName .'="'. $attrVal .'"';
}
}

$attrs = ' '. implode(' ', $attrs);

$id = $this->getAttribute('id', $this->getName());
$name = $this->getName();
$checked = '';

if ($this->getValue()) {
$checked = ' checked';
}

return <<<HTML
<input type="hidden" id="{$id}_" name="{$name}" value="0" />
<input type="checkbox" id="{$id}" name="{$name}" value="1"{$attrs}{$checked} />
HTML;
}
}

最佳答案

public Phalcon\Forms\ElementInterface setDefault (unknown $value) inherited from Phalcon\Forms\Element

Sets a default value in case the form does not use an entity or there is no value available for the element in _POST

Source .

看起来你的表单声明可以是这样的:

$controls[] = (new Check('usesLayout', ['value' => '1']))
->setLabel('Should I use layout?')
->setDefault('0') // or `false` in case it's not filtered
->addFilter('bool'); // filtering to boolean value

未测试,但可能会。您总是可以尝试在表单的 beforeValidation() 方法中处理这个问题,但是现在没有空间来测试它,并且我不会在这里冒险尝试失败的解决方案。

关于forms - 如何在 Phalcon 表单中使用复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32360421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com