2010-05-21 39 views
1

在PHP中,我經常使用條件運算符將屬性添加到html元素(如果它適用於所討論的元素)。例如:Mako中使用標箱的條件運算符

<select name="blah"> 
    <option value="1"<?= $blah == 1 ? ' selected="selected"' : '' ?>> 
     One 
    </option> 
    <option value="2"<?= $blah == 2 ? ' selected="selected"' : '' ?>> 
     Two 
    </option> 
</select> 

我開始使用Mako進行模板的Pylons項目。我怎樣才能達到類似的目的?現在,我看到兩種不理想的可能性。

解決方案1:

<select name="blah"> 
    % if blah == 1: 
    <option value="1" selected="selected">One</option> 
    % else: 
    <option value="1">One</option> 
    % endif 
    % if blah == 2: 
    <option value="2" selected="selected">Two</option> 
    % else: 
    <option value="2">Two</option> 
    % endif 
</select> 

解決方案2:

<select name="blah"> 
    <option value="1" 
    % if blah == 1: 
     selected="selected" 
    % endif 
    >One</option> 
    <option value="2" 
    % if blah == 2: 
     selected="selected" 
    % endif 
    >Two</option> 
</select> 

在此特定情況下,該值等於所測試的變量(值= 「1」=>嗒嗒== 1) ,但我在其他情況下使用相同的模式,例如<?= isset($variable) ? ' value="$variable" : '' ?>

我正在尋找一種乾淨的方式來實現這個使用Mako。

+0

只是讓你知道,'? :'是*三元運算符。它恰好是唯一的一個,所以它經常被誤認爲是*三元運算符。它的真名是「條件操作符」。 – Josh 2010-05-21 19:06:25

+0

你說得對,我也糾正了問題的標題。 – 2010-05-21 20:02:43

回答

5

如果它的運行Python中, 「三元運算符」 是

# condition ? trueValue : falseValue 
trueValue if condition else falseValue 
+0

是的,謝謝! $ {'selected =「selected」'if blah == 1 | n}很好。 $ {'selected =「selected」'if blah == 1 else'something-else'| n}也很好。 – 2010-05-21 19:00:13

+0

我嘗試了您的建議解決方案$ {'selected =「selected''if customer ['content'] ['status'] == 1 | n}但我一直得到一個SyntaxError說無效的語法。如果客戶[「內容」] [')打印出以下內容:(u'str(\'selected =「selected」\') – Mark 2012-09-19 06:55:35