автономная работа верстальщика и программиста Дмитрий Фомин Спецвыпуск: Хакер, номер #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] Часто при генерации прайс-листов или длинных таблиц с наименованиями важна читаемость. Для этого умные люди придумали чередовать цвет записей: серая полоска, белая полоска и так далее. В смарти — без проблем. ЛИСТИНГ |