вторник, 23 февраля 2010 г.

Как заставить сотрудничать Smarty и Form Helper из CodeIgniter

Так как, при использовании шаблонизатора Smarty, ограничивается использование PHP-тегов, необходимо искать другие пути.

Один из них это разработка плагина для Smarty.
Немного покопавшись, я нашёл готовый, но меня не устроил ограниченный набор передаваемых параметров.

Поэтому я допилил до следующего вида:



  1. <?php


  2. /*


  3.  Author: Svetoslav Marinov; svetoslavm [] gmail.com


  4.  Inspired by: http://codeigniter.com/wiki/Use_URL_helper_from_Smarty/


  5.  Modified: Dmitriy S. Aleshkowsky; to.wwarlock [] gmail.com


  6.  */




  7. function smarty_function_form($params, &$smarty)


  8. {


  9.     //check if the needed function exists


  10.     //otherwise try to load it


  11.     if (!function_exists('form_open')) {


  12.         //return error message in case we can't get CI instance


  13.         if (!function_exists('get_instance')) return "Can't get CI instance";


  14.         $CI =& get_instance();


  15.         $CI->load->helper('form');


  16.     }




  17.     // Making it more complex


  18.     if (isset($params['url'])) {


  19.         $url = $params['url'];


  20.         unset ($params['url']);


  21.         if ($params['type'] == 'upload')


  22.         {


  23.             unset ($params['type']);


  24.             return form_open_multipart($url, $params);


  25.         } else {


  26.             return form_open($url, $params);


  27.         }


  28.     } elseif (empty($params)) {


  29.         return form_close();


  30.     }


  31. }


  32. ?>

Согласно API можно ещё добавить параметры для скрытых полей, однако у меня не было в них необходимости, поэтому я намеренно не стал их реализовывать.

Комментариев нет: