0

我有一个属性为“主页”的类,其中 url 存储在一个数组中。现在我想创建一个管理表单来编辑此字段,但我没有让它显示存储的值或接受向属性添加新值。我得到的只是一个空的表单域。

使用下面的代码简单地显示部分值很容易,但是如何让它使用所有先前存储的值呈现输入字段?

<div class="sf_admin_form_row">
<label>
    <?php echo $form['homepages']->renderLabel('homepages') ?>
</label>
<?php foreach(sfOutputEscaper::unescape($form->getObject()->getHomepages()) as    $key=>$value): ?>
<div class="content"><?php echo $value ?></div>
<?php endforeach ?>
</div>

任何帮助都感激不尽。

4

1 回答 1

1

我会尝试做的是创建一个嵌入表单的集合或编写我自己的小部件来处理该字段。

如果您尝试使用第一个解决方案,则必须在表单类中反序列化您的属性。然后遍历数组并嵌入一个简单的表单,其中包含一个输入字段和一个字段值。然后添加一个选项以添加新值(通过嵌入另一个表单)或删除它们。您还必须覆盖表单的保存方法,以便它们正确处理该字段(即序列化该字段)。

或者,您可以创建一个小部件类,该类将正确处理输入集合的显示(再次 - 反序列化值并显示每个 URL 的输入)。您还必须创建一个验证器类,该类将从输入中获取值并对其进行序列化。

于 2014-01-16T10:19:05.097 回答