浏览代码

merged branch vicb/form/php-choices (PR #1415)

Commits
-------

2cf7136 [FrameworkBundle][Form] tweak the choice widget PHP template

Discussion
----------

[FrameworkBundle][Form] tweak the choice widget PHP template

* make theming easier,
* factorize code,
* make PHP similar to Twig (easier to maintain)
Fabien Potencier 14 年之前
父节点
当前提交
bc2f9479e3

+ 11 - 0
src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/choice_options.html.php

@@ -0,0 +1,11 @@
+<?php foreach ($options as $choice => $label): ?>
+    <?php if ($view['form']->isChoiceGroup($label)): ?>
+        <optgroup label="<?php echo $view->escape($choice) ?>">
+            <?php foreach ($label as $nestedChoice => $nestedLabel): ?>
+                <option value="<?php echo $view->escape($nestedChoice) ?>"<?php if ($view['form']->isChoiceSelected($form, $nestedChoice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($nestedLabel) ?></option>
+            <?php endforeach ?>
+        </optgroup>
+    <?php else: ?>
+        <option value="<?php echo $view->escape($choice) ?>"<?php if ($view['form']->isChoiceSelected($form, $choice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($label) ?></option>
+    <?php endif ?>
+<?php endforeach ?>

+ 2 - 22
src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/choice_widget.html.php

@@ -12,29 +12,9 @@
     >
         <?php if (null !== $empty_value): ?><option value=""><?php echo $view->escape($view['translator']->trans($empty_value)) ?></option><?php endif; ?>
         <?php if (count($preferred_choices) > 0): ?>
-            <?php foreach ($preferred_choices as $choice => $label): ?>
-                <?php if ($view['form']->isChoiceGroup($label)): ?>
-                    <optgroup label="<?php echo $view->escape($choice) ?>">
-                        <?php foreach ($label as $nestedChoice => $nestedLabel): ?>
-                            <option value="<?php echo $view->escape($nestedChoice) ?>"<?php if ($view['form']->isChoiceSelected($form, $nestedChoice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($nestedLabel) ?></option>
-                        <?php endforeach ?>
-                    </optgroup>
-                <?php else: ?>
-                    <option value="<?php echo $view->escape($choice) ?>"<?php if ($view['form']->isChoiceSelected($form, $choice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($label) ?></option>
-                <?php endif ?>
-            <?php endforeach ?>
+            <?php echo $view['form']->renderBlock('choice_options', array('options' => $preferred_choices)) ?>
             <option disabled="disabled"><?php echo $separator ?></option>
         <?php endif ?>
-        <?php foreach ($choices as $choice => $label): ?>
-            <?php if ($view['form']->isChoiceGroup($label)): ?>
-                <optgroup label="<?php echo $view->escape($choice) ?>">
-                    <?php foreach ($label as $nestedChoice => $nestedLabel): ?>
-                        <option value="<?php echo $view->escape($nestedChoice) ?>"<?php if ($view['form']->isChoiceSelected($form, $nestedChoice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($nestedLabel) ?></option>
-                    <?php endforeach ?>
-                </optgroup>
-            <?php else: ?>
-                <option value="<?php echo $view->escape($choice) ?>"<?php if ($view['form']->isChoiceSelected($form, $choice)): ?> selected="selected"<?php endif?>><?php echo $view->escape($label) ?></option>
-            <?php endif ?>
-        <?php endforeach ?>
+        <?php echo $view['form']->renderBlock('choice_options', array('options' => $choices)) ?>
     </select>
 <?php endif ?>