Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #67, ИЮНЬ 2006 г.

автономная работа верстальщика и программиста

Дмитрий Фомин

Спецвыпуск: Хакер, номер #067, стр. 067-016-2


$this->smarty->assign('TMPL',$tmpl);

}

function assign($name,$value = false){

if($value) $this->smarty->assign($name,$value);

else $this->smarty->assign($name);

}

function display(){

$this->smarty->display($this->template);

}

function getTmplContents(){

return $this->smarty->fetch($this->template);

}

}

?>

ЛИСТИНГ

при создании нового объекта теперь пишешь

$oParser = new tmpl();

$oParser ->setTmpl(‘mail.tpl’);

$oParser ->assign(‘name’,$name);

$oParser ->assign(‘time’,$time);

$oParser->display();

[встроенные плагины]

В Smarty есть большое количество встроенных плагинов, которые помогают программисту сократить время разработки. С их помощью можно не делать проверки input полей, не обрезать строки по словам, есть возможность генерировать select боксы автоматически и не использовать, к примеру, внутренние директивы {foreach}.

[модификатор еscape]

Когда создаешь формы при помощи Smarty, для юзеров, которые неправильно вводят поля данных формы, например кавычки или служебные символы HTML, можно обработать данные как обычно при помощи PHP, а можно использовать внутренние возможности Smarty.

ЛИСТИНГ

проверка данных при помощи Smarty

{$articleTitle}

{$articleTitle|escape}

{$articleTitle|escape:"html"} {* ескейпятся все символы & " ' < > *}

{$articleTitle|escape:"htmlall"} {* тут понятно, все хтмл директивы *}

{$articleTitle|escape:"url"}

{$articleTitle|escape:"quotes"}

Часто, когда емейл оставляют на сайте в чистом виде, спамеры сканирующие сайты, могут его обнаружить. Потом ничего хорошего не будет: выучи английский, увеличь член, купи виагру.... Escape поможет.

ЛИСТИНГ

защита емейла

<a href="mailto:{$EmailAddress|escape:"hex"}">{$EmailAddress|escape:"hexentity"}</a>

ЛИСТИНГ

если это провернуть с емейлом Васюни, выйдет следующее

<a href="mailto:%76%61%73%75%6e%6a%61%40%67%6d%61%69%6c%2e%63%6f%6d">vasunja@gmail.com</a>

[функция html_options]

Теперь о селектбоксе в форме.

ЛИСТИНГ

можно использовать {foreach}

{foreach from=$dataselect item=item}

<option value="{$item.key}">{$item.value}</option>

{/foreach}

Еще нужно добавить if, чтобы вывести значение по умолчанию. Это удлинит код строчек на 5. Но лучше и удобнее использовать html_options. Для этого нужно при формировании массива в PHP сделать хеш и дать «съесть» смарти.

ЛИСТИНГ

со значением по умолчанию

$oParser->assign(‘optionts’,Array(‘key’=>’value’, ‘key1’=>’value1’, ‘key2’=>’value2’, ‘key3’=>’value3’);

$oParser ->assign('defaultopt', ‘key2’);

ЛИСТИНГ

теперь в шаблоне вывода автоматически выберется дефолтное значение

<select name=customer_id>

{html_options options=$optionts selected=$defaultopt}

</select>

[функция cycle]

Часто при генерации прайс-листов или длинных таблиц с наименованиями важна читаемость. Для этого умные люди придумали чередовать цвет записей: серая полоска, белая полоска и так далее. В смарти — без проблем.

ЛИСТИНГ

Назад на стр. 067-016-1  Содержание  Вперед на стр. 067-016-3