[dev] [commit] r996 - wwwbase
Cătălin Frâncu
cata at francu.com
Sat Sep 21 19:44:32 EEST 2013
Arată perfect, cu două observații. Una minoră:
> + foreach($forms as $form => $value) {
> + if ($value > 0) {
> + $buffer .= "<option value=\"".$charArray[$form]."\">".self::getToUpperOrToLower($charArray[$form], $middle)."</option>";
> + }
> + else {
> + $i ++;
> + }
> + }
> + $buffer .= '</select>';
> +
> + if ($i > 1) {
Nu ai nevoie de variabila $i. Poți testa ultima linie cu if (count($forms) > 1).
Și observația mai mare: este bine să eviți să generezi HTML din scriptul PHP (tagurile <select>, <option>, <div> și <textarea>). Ideea template-urilor este tocmai să separe HTML-ul de PHP. Îți sugerez să procedezi așa:
- Stochează toate variantele și trimite-le către template;
- Variantele sunt un tuplu de (text fără posibile diacritice, array de variante pentru următorul caracter).
- Template-ul este cel care generează select-ul.
De exemplu, Pentru textul „Ana are mere”, aș asambla vectorul
(text => '', options => array('A', 'Ă', 'Â')),
(text => 'n', options => array('a', 'ă', 'â')),
(text => ' ', options => array('a', 'ă', 'â')),
(text => 're mere', options => null)
Iar în template ai face ceva de genul
{foreach from=$choices item=c}
{$c.text}
{if $c.options} {* posibil ca ultimul element să nu mai aibă un vector de opțiuni *}
<select>
{foreach from=$c.options item=o}
<otption value="{$o}">{$o}</option>
{/foreach}
</select>
{/if}
{/foreach}
Mă rog, cam așa ceva.
Cătălin
More information about the Dev
mailing list