代码之家  ›  专栏  ›  技术社区  ›  TheHippo

如何在symfony窗体上隐藏单个标签?

  •  2
  • TheHippo  · 技术社区  · 15 年前

    foreach ($foo as $c) {
            $fields['crit_v_'.$c->getId()]=new sfWidgetFormInput(array('label'=>''));
            $fields['crit_m_'.$c->getId()]=new sfWidgetFormTextarea(array('label'=>__($c->getName(),array(),'messages')));
        }
    

    null '' 不使symfony不呈现此标签,并显示此标签的默认文本(这意味着为输入添加了标签 crit_v_xx .)
    有没有隐藏特定表单标签的简单方法?

    5 回复  |  直到 15 年前
        1
  •  6
  •   j0k gauthamp    12 年前

    <label> 没有标签。False的行为与null或“”不同

    $your_form->widgetSchema->setLabel('the_field_id', false);
    
        2
  •  2
  •   TheHippo    15 年前

    我制作了一个单独的模板文件,名为 _form.php

    <form action="<?php echo url_for('evaluation_submit')?>" method="post">
    <?php echo $form['id']?>
    <div> <!-- with label -->
        <?php echo $form['foo']->renderLabel() ?>
        <?php echo $form['foo']->renderError() ?>
        <?php echo $form['foo'] ?>
    </div>
    <div> <!-- without label -->
        <?php echo $form['bar']->renderError() ?>
        <?php echo $form['bar'] ?>
    </div>
    

    在该操作的主模板中,我包括如下表单:

    <?php include_partial('form', array('form' => $form)) ?>
    
        3
  •  1
  •   Hayden    12 年前

    您可以在generator.yml中禁用它

    filter:
      fields:
        name: { label: false }
    
        4
  •  0
  •   Felix Kling    15 年前

    可以创建自定义行格式,该格式定义字段的呈现方式(如果不使用自定义模板)。我在这里找到的 forum thread .

    一个好的解决方案可能是覆盖 formatRow 方法:

    public function formatRow($label, $field, $errors = array(), $help = '', $hiddenFields = null)
    {
        if(strip_tags($label) == '__UNSET__')
        {
            return strtr($this->getRowFormat(), array(
                '%label%'         => null,
                '%field%'         => $field,
                '%error%'         => $this->formatErrorsForRow($errors),
                '%help%'          => $this->formatHelp($help),
                '%hidden_fields%' => is_null($hiddenFields) ? '%hidden_fields%' : $hiddenFields,
            ));
        }
        else
        {
            return strtr($this->getRowFormat(), array(
                '%label%'         => $label,
                '%field%'         => $field,
                '%error%'         => $this->formatErrorsForRow($errors),
                '%help%'          => $this->formatHelp($help),
                '%hidden_fields%' => is_null($hiddenFields) ? '%hidden_fields%' : $hiddenFields,
            ));
        }
    }
    

    然后你开始 __UNSET__


    行格式如下所示 <div >%field%%help%%error%%hidden_fields%</div> $this->getRowFormat() .

        5
  •  0
  •   danii    15 年前

    要将symfony表单中单个字段的标签设置为空白,请执行以下操作:

    $your_form->widgetSchema->setLabel('the_field_id', ' ');
    

    它将使 <label> 标记,但内部有空白,因此它们不会在浏览器上输出任何内容