[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