2

我正在研究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 );

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

谢谢

4

2 回答 2

4

从手册:

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

$checkboxElement->setChecked(true);

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

于 2010-03-20T05:58:37.827 回答
0

或使用 $

data['isAdmin'] = 1; // NOT string 
于 2010-08-04T08:32:40.350 回答