PHP Symfony конвертировать Propel Choice в строку - PullRequest
0 голосов
/ 02 ноября 2011

Я использую форму propel, чтобы позволить пользователю создать учетную запись, форма состоит из двух частей;ввод и затем предварительный просмотр.

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

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,

Ответы [ 2 ]

0 голосов
/ 03 ноября 2011

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

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

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

0 голосов
/ 03 ноября 2011

Попробуйте:

$obj = $form->getObject();

, чтобы получить значения вашего объекта.Тогда:

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

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

...