【问题标题】:Zend: How to populate data to checkboxes?Zend:如何将数据填充到复选框?
【发布时间】:2011-01-29 17:43:00
【问题描述】:

我正在研究 zend。我有一个带有一些复选框的表格。我想从数据库中获取数据并将这些数据填充到这个表单中。如果“1”存储在表字段中,则勾选复选框,否则不理会它。在文本框和下拉菜单中,数据很容易填充,但如何检查复选框。

我正在 form.php 中创建这样的复选框和文本框元素:

// Person name
$person = $this->CreateElement('text', 'name');
$person->setLabel('Name');
$elements[] = $person;    

// Organization name
$person = $this->CreateElement('text', 'organization');
$person->setLabel('Organization');
$elements[] = $person;       

// isAdmin Checkbox
$isAdmin = $this->CreateElement('checkbox', 'isAdmin');
$isAdmin->setLabel('Admin');
$elements[] = $isAdmin;

$this->addElements($elements);
$this->setElementDecorators(array('ViewHelper'));

// set form decorator (what script will render the form)
$this->setDecorators(array(array('ViewScript' , array('viewScript' => 'organization/accessroles-form.phtml'))));

我如何呈现表单:

<form name="myform" action="<?= $this->element->getAction() ?>" method="<?= $this->element->getMethod() ?>" id="accessrolesform">

<table align="center" width="100%" border="0"><tbody>

<tr>
    <td><?= $this->element->name ?></td>
</tr>

<tr>
    <td><?= $this->element->organization ?></td>
</tr>


<tr>
    <td><?= $this->element->isAdmin ?></td>
</tr>

</table>
</form>

并像这样填充数据(例如):

// Prepare data to populate
$data['name'] = 'Naveed';
$data['organization'] = 'ABC';
$data['isAdmin'] = '1';

// Populate editable data
$this->view->form->populate( $data );

它在文本框中填充数据但不选中复选框?知道如何从操作中检查复选框吗?

谢谢

【问题讨论】:

  • 可能装饰里有什么东西..尝试显示这种渲染形式的html代码
  • @Gordon:哈哈哈。你知道我如何使用 SO。我正在做一个项目。当我被分配一些任务时,我会针对它们进行锻炼并在 SO 上发布一些我觉得困难的问题。当我遇到执行该任务的日期时,我会再次阅读答案并尝试实施。如果答案对我有帮助,那么我接受该答案。因此我需要时间来接受一个答案:)
  • 哦。它开始在我的问题中使用上述代码。我认为我的数据库数据有问题。无论如何,很抱歉造成混乱。谢谢

标签: php zend-framework checkbox populate


【解决方案1】:

来自手册:

默认情况下,选中的值为'1', 和未经检查的值'0'。你可以 指定要使用的值 setCheckedValue() 和 setUncheckedValue() 访问器, 分别。此外,设置 该值设置了选中的属性 复选框。您可以使用 isChecked() 或简单地访问 财产。使用 setChecked($flag) 方法都将设置的状态 标志以及设置适当的 选中或未选中的值 元素。时请使用此方法 设置 a 的选中状态 复选框元素以确保值 设置正确。

$checkboxElement->setChecked(true);

将复选框的值设置为 'checked="checked",值为“1”。

【讨论】:

    【解决方案2】:

    或使用 $

    data['isAdmin'] = 1; // NOT string 
    

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      相关资源
      最近更新 更多