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

时间:2015-06-02 13:53:02

标签: php checkbox zend-framework2

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

查看/ 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>

1 个答案:

答案 0 :(得分:0)

您不必担心选中此复选框。它将自动为您完成,但为了使其工作,您必须先调整它。

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

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' : ''; ?>>

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