2011-11-02 2 views
0

Я использую форму propel, чтобы пользователь мог создать учетную запись, форма состоит из двух частей; ввод, а затем предварительный просмотр.PHP Symfony Convert Propel Choice to String

На моей странице просмотра Заявляю значения формы, как обычно, и эти услуги предоставляются в прежнем виде

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 он просто выводит выбранный идентификатор, а не строковое представление о нем.

Правильно ли в Symfony вывести текстовое представление значения виджета? Или мне нужно что-то взломать? (любые идеи?)

Большое спасибо,

Pez,

ответ

0

Я получил эту проблему, выполнив следующие действия:

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

Я надеюсь, что это полезным для кого-то, как это было сводит меня с ума!

0

Try:

$obj = $form->getObject(); 

иметь значения вашего объекта. Затем:

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

это может работать в большинстве случаев. Но, если этого не произойдет, вам нужно будет написать все поля предварительного просмотра вручную и отобразить их, используя $obj выше.