PHP.Написать якорь в шаблоне Smarty.(Кохана 3 + КСмарти) - PullRequest
1 голос
/ 19 января 2012

Я изучаю Kohana 3.2.0 вместе с KSmarty для Kohana 3. Я хотел бы написать якорь на странице следующим образом:

<a href="http://www.mysite.cz/page/list">Page list</a>

Я могу создать URL в контроллере и передать его Smarty как переменную, но. Есть ли способ создать привязку или URL в шаблоне Smarty (включая "http://www.mysite.cz" part)?

Если невозможно построить якорь. Возможно ли хотя бы создать полный URL?

Причина: У меня есть основной шаблон, который включает другой шаблон. Основной шаблон будет использоваться несколькими контроллерами, и я хотел бы избежать создания URL-адреса в каждом контроллере . Поэтому я буду счастлив, если KSmarty сможет сделать это для меня.

1 Ответ

2 голосов
/ 22 января 2012

Единственное решение, которое я нашел, - написать пользовательскую функцию.Сохраните следующий код в файле function.url.php в каталоге плагинов Smarty:

function smarty_function_url($params, &$smarty)
{
  $type = '';
  if(isset($params['type'])) $type = $params['type'];
  $protocol = 'http';
  if(isset($params['protocol'])) $protocol = $params['protocol'];
  $url = '';
  if(isset($params['url'])) $url = $params['url'];
  $text = '';
  if(isset($params['text'])) $text = $params['text'];

  switch($params['type'])
  {
    case 'url': 
      return Kohana_URL::site($url, $protocol);
    case 'anchor':
      $url = Kohana_URL::site($url, $protocol);    
      return "<a href='{$url}'>{$text}</a>";
    default: 
      return Kohana_URL::base('http');  
  }
}

Примеры использования в шаблоне Smarty:

{url}
{url type='url' url='admin/categories' protocol='https'}
{url type='anchor' url='admin/articles' text='List of articles'}

Первый блок, в котором установлены переменные, у меня былчтобы написать иначе, Smarty генерировал уведомление "Неопределенная переменная ...".Я только учусь на PHP, предложения по улучшению кода приветствуются.

Надеюсь, это поможет другим.

...