如果输入值 = 1,则 Zend Framework 2 选中复选框

Zend Framework 2 checked checkbox if input value = 1

我正在做一个基于 http://www.jasongrimes.org/2012/01/using-doctrine-2-in-zend-framework-2/ 的新模块,但我遇到了一个问题。如果值 = 1,如何选中复选框?

view/index.phtml

<?php

$title = 'Newsletter';
$this->headTitle($title);
?>

<h1>Newsletter</h1>
<p>Select users who are to receive the newsletter.</p>

<table class="table table-striped">
    <tr>
        <td width="80%"><strong>User_id</strong></td>
        <td width="10%" align="center"><strong>Yes/No</strong></td>
    </tr>
    <?php foreach ($newsletters as $newsletter) : ?>

        <tr>
            <td><?php echo $this->escapeHtml($newsletter->user_id); ?></td>
            <td align="center"><?php echo $this->escapeHtml($newsletter->wantNewsletter); ?> <input type="checkbox" name="wantNewsletter" value="<?php echo $this->escapeHtml($newsletter->wantNewsletter); ?>"></td>
        </tr>

    <?php endforeach; ?>
    <tr>
        <td colspan="2" align="right"><button>Zapisz</button></td>
    </tr>
</table>

您不必担心选中复选框。它会自动为您完成,但为了使其正常工作,您必须先对其进行调整。

首先,您需要在表单中定义复选框:

final class SomeForm extends Form
{

    public function __construct($name = null)
    {
        .....

        // Add the checkbox here
        $this->add(array(
            'name' => 'wantNewsletter',
            'type' => 'checkbox',
        ));

然后在模板中,你可以简单地渲染它:

 echo $this->formRow($form->get('wantNewsletter'));

如果属性 wantNewsletter 的值为 1,则复选框将被自动选中。

您拥有的另一个解决方案实际上是此任务的变通方法,只需在值为 1.

时渲染 属性 即可完成
<input type="checkbox" name="wantNewsletter" value="<?php echo $newsletter->wantNewsletter); ?>" <?php echo $newsletter->wantNewsletter ? 'checked' : ''; ?>>

尽可能使用第一个解决方案,因为它更准确且更符合框架。