2013-06-19 5 views
0

Попробуйте использовать base_url() и site_url() из шаблона Smarty. Я прочитал несколько статей о том, как это сделать. Но никто не работает. я создаю «плагин» для Smarty называется functions.url.php после этого урока: https://github.com/EllisLab/CodeIgniter/wiki/Smarty-plugin---URL-Helper
Итак, я использую {URL} Smarty «тег»:Функции Codeigniter в Smarty

<form action={url type='site' url='authentication/login'} method="post" id="login_form"> 

Но, Whe я получить доступ на сайт, умник показывает большой Фатальная ошибка в строке ниже:

«SmartyCompilerException» с сообщением «Ошибка синтаксиса в шаблоне

Любые идеи?.

Редактировать: Новые шаги.

Я изменил имя плагина для: plugin.url.php И я пытаюсь зарегистрировать плагин в контроллере с:

$this->smartyci->registerPlugin("function", "url", "smarty_function_url"); 

Но новая ошибка шоу:

«SmartyException» с сообщением 'Плагин не отозваны'

ответ

0
  1. Поместите Smarty в CI в какую-нибудь папку, например, THIRD_PARTY/SMAR ти.
  2. Добавить Smarty для CI - создание библиотеки приложений/библиотеки/Mysmarty.php

определяют ('smarty_dir', 'AppPath THIRD_PARTY/Smarty /'.); require_once (SMARTY_DIR.'Smarty.class.php ');

class Mysmarty extends Smarty 
{ 
    public function __construct () 
    { 
     parent::__construct(); 
     $config =& get_config();    
     $this->template_dir = $config['smarty_template_dir'];                   
     $this->compile_dir = $config['smarty_compile_dir']; 
     $this->cache_dir  = $config['cache_dir']; 
     $this->caching  = $config['caching']; 
    } 

    function view($resource_name, $params = array()) { 
     if (strpos($resource_name, '.') === false) { 
      $resource_name .= '.tpl'; 
     } 

     if (is_array($params) && count($params)) { 
      foreach ($params as $key => $value) { 
       $this->assign($key, $value); 
      } 
     } 

     if (!is_file($this->template_dir . $resource_name)) { 
      show_error("template: [$resource_name] cannot be found."); 
     } 

     return parent::display($resource_name); 
    } 
} 
  1. Добавить новые переменные конфигурации для приложения/Config/config.php

    $ конфиги [ 'smarty_template_dir'] = AppPath. 'Просмотры/'; // папка для ваших шаблонов smarty $ config ['smarty_compile_dir'] = APPPATH. 'Кэш/Smarty/сост /'; // создаем эту папку $ config ['cache_dir'] = APPPATH. 'Кэш/Smarty/кэшированные /'; // создаем эту папку $ config ['caching'] = 0;

  2. Добавить новую библиотеку для автоматической загрузки в файл application/config/autoload.php

    $ autoload ['libraries'] = array ('database', 'session', 'mysmarty');

  3. Теперь в вашем контроллере пытаются добавить некоторую переменную Smarty:

    $ this-> mysmarty-> правопреемником ('URL', $ this-> config-> пункт ('base_url'));

, а затем показать шаблон:

$this->mysmarty->view('main'); // template path is application/views/main.tpl 

И в main.tpl добавить форму

<form action={$url} method="post" id="login_form"> 
... 


enter code here 
+0

извините за вопросы форматирования ( – ToxaBes

Смежные вопросы