2012-04-23 19 views
8

Mam gałązka makro do tworzenia element formularz pola kombi takiego:Zmienna nazwa zmiennej w gałązka

{% macro select(name, label, choices, help, value) %} 
<div class="control-group"> 
    <label class="control-label" for="{{ name }}">{{ label }}</label> 
    <div class="controls"> 
     {% for choice in choices %} 
      {% if value is not empty and value == choice.id %} 
       <option value="{{ choice.id }}" selected="selected">{{ choice.code }} - {{ choice.name }}</option> 
      {% else %} 
       <option value="{{ choice.id }}">{{ choice.name }}</option> 
      {% endif %} 
     {% endfor %} 
     <p class="help-block">{{ help }}</p> 
    </div> 
</div> 
{% endmacro %} 

Jak widać, nie jest to bardzo elastyczny, ponieważ można używać tylko obiekty z id i nazwa pola jako wartość opcji i etykieta. Przed migracją do gałązka, używam tej funkcji PHP:

function form_select($name, $label, $choices, $keycol, $valcol, $value=null, $help=null) 
{ ?> 
<div class="control-group"> 
    <label class="control-label" for="<?php echo $name; ?>"><?php echo $label; ?></label> 
    <div class="controls"> 
     <select name="<?php echo $name; ?>" class="span7" id="<?php echo $name; ?>"> 
      <?php foreach ($choices as $choice) : ?> 
       <option value="<?php echo $choice->$keycol; ?>" <?php if ($choice->$keycol == $value) echo "selected"; ?>> 
        <?php echo $choice->$valcol; ?> 
       </option> 
      <?php endforeach; ?> 
     </select> 
     <p class="help-block"><?php echo $help; ?></p> 
    </div> 
</div> 
<?php } 

Za pomocą tej funkcji można wysłać dowolne obiekty na funkcję i używać go jako wartość opcji i etykiety przekazując nazwę pola do funkcji ($keycol i $valcol) i dostęp do nich poprzez funkcję zmiennej zmiennej nazwy PHP ($choice->$keycol i $choice->$valcol).

Czy mimo to mogę odtworzyć tę funkcję jako makro gałązki?

Odpowiedz

Powiązane problemy