2011-11-02 45 views
0

我使用的是一个推动表单来允许用户创建一个帐户,表单有两个部分;进入然后预览。PHP Symfony将Propel Choice转换为字符串

在我的预览页面我声明的形式像往常一样的价值观和这些被前面的表格,但

public function configure() { 
    //Preview page no fields are displayed anyway xD 
    $this->useFields(array('email', 'user_gender_id', 'search_gender_id', 'content', 'age', 'location')); 

,而不是输出我想在页面上呈现的值的字段提供:

<?php echo $form->renderHiddenFields(); ?> 

    <?php foreach($form as $field): ?> 

     <?php if(!$field->isHidden()): ?> 
      <tr> 
       <th><?php echo $field->renderLabel() ?></th> 
       <td><?php echo $field->getValue(); ?></td> 
      </tr> 
     <?php endif; ?> 

    <?php endforeach; ?> 

<?php else: ?> 

    <?php echo $form; ?> 

<?php endif; ?> 

不幸的是,我的sfWidgetFormPropelChoice/sfWidgetFormChoice字段它只是输出所选择的ID,而不是它的一个字符串表示。

Symfony中是否有正确的方式输出小部件值的文本表示?或者我必须一起破解一些东西? (什么想法?)

非常感谢,

佩斯,

回答

0

我解决此问题得到了通过执行以下操作:

<td><?php if(method_exists($field->getWidget(), "getChoices")) { 
    $choices = $field->getWidget()->getChoices(); 
    echo $choices[$field->getValue()]; 
} else 
    echo $field->getValue(); 
?></td> 

我希望这是使用的人,因为它已经快把我逼疯了!

0

尝试:

$obj = $form->getObject(); 

有你的对象的值。然后:

echo $obj[$field->getName()]; 

这可以在大多数情况下工作。但是,如果不行,则必须手动编写所有预览字段,并使用上面的$obj来显示它们。