【问题标题】:sfWidgetFormDoctrineChoice: how to iterate data from nested models? (Symfony 1.4)sfWidgetFormDoctrineChoice:如何从嵌套模型中迭代数据? (Symfony 1.4)
【发布时间】:2011-10-11 13:47:49
【问题描述】:

我有来自其他模型的带有嵌套字段的 ConnectForm:数字。 我想用所有的数字来渲染这个 ConnectForm,当我只是

    <?php echo $form['numbers_list'] ?>

但我需要打印其他 Numberss 的字段,例如:价格、代码等。 怎么打印?

对我来说最好的方法是这样的:

    <?php foreach($form['numbers_list'] as $num): ?>
        <span> echo $num->renderInput()</span>
        <span>echo $num->getPrice()</span>
        <span>echo $num->getCode()</span>
    <?php endforeach; ?>

【问题讨论】:

    标签: symfony1 symfony-forms symfony-1.4


    【解决方案1】:

    您可能最好创建一个自定义的 sfWidgetFormSchemaFormatter 类,然后使用它来输出您的表单 - 一旦您创建了新的 sfWidgetFormSchemaFormatter 类,您就可以通过 &lt;?php echo $form ?&gt; 输出整个表单:

    class sfWidgetFormSchemaFormatterCustom extends sfWidgetFormSchemaFormatter
    {
      protected
        $rowFormat       = "<span class=\"my-label-class\">%label%</span>\n  <span>%error%%field%%help%%hidden_fields%</span>`n",
        $errorRowFormat  = "<span class=\"my-error-class\" colspan=\"2\">\n%errors%</span>\n",
        $helpFormat      = '<br />%help%',
        $decoratorFormat = "<div>\n  %content%</div>";
    }
    

    然后在表单的配置方法中添加以下内容,告诉表单使用您的自定义装饰器:

    $this-&gt;getWidgetSchema()-&gt;setFormFormatterName('custom');

    【讨论】:

    • 它适用于整个表单?我只需要为表单中的嵌套数据自定义输出。该怎么做?
    • 只需更改rowFormat以匹配您需要的行格式...然后您就可以输出整个表格
    • 对不起。我认为我解释得很糟糕,或者我只是不明白你:当我输出选择时的问题是我只得到它的 id,而不是来自 DB 的其他行。
    • 啊,好吧——那么你需要看看这个页面——>symfony-project.org/api/1_4/sfWidgetFormDoctrineChoice 并使用method 参数...。
    • 是的。但是方法参数仅适用于将在格式化的 html 中打印的值。我想自己格式化那个html。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多