Smarty view renderer для Yii

Выкладываем свои наработки

Smarty view renderer для Yii

Сообщение Sam Dark » 2009.10.11, 18:33

Позволяет использовать шаблоны Smarty в Yii.

http://www.yiiframework.com/extension/s ... -renderer/
Аватара пользователя
Sam Dark
Администратор
 
Сообщения: 1693
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж

Re: Smarty view renderer для Yii

Сообщение Sam Dark » 2010.03.04, 23:04

Обновлён до 0.9.5.

[*] Изменена структура YiiExt, см. readme.
[+] Совмесимость с Smarty 3.
[+] Плагины для функций t и link.

http://code.google.com/p/yiiext/source/ ... ers/smarty
Аватара пользователя
Sam Dark
Администратор
 
Сообщения: 1693
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж

Re: Smarty view renderer для Yii

Сообщение andry » 2010.03.05, 13:45

попробовал использовать плагин link заметил такую проблемку, если указываю так

{link text="test" url="controller/action?page=73&count=15"}

то шаблон выводит такое
<a href="/mysite/controller/action/0[page]/73/0[count]/15">test</a>

неверно обрабатывается составление параметров

посмотрите мой плагин, что выкладывал тут
viewtopic.php?p=3368#p3368
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52

Re: Smarty view renderer для Yii

Сообщение Sam Dark » 2010.03.05, 13:46

Да, я его до конца не оттестировал… нужно будет над ним ещё поработать.
Аватара пользователя
Sam Dark
Администратор
 
Сообщения: 1693
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж

Re: Smarty view renderer для Yii

Сообщение andry » 2010.03.05, 18:49

причина была в том что те параметры что передавались после знака "?" находились во вложенном массиве, их я слил через array_merge() теперь всё в порядке. Ниже переделанная мной новая функция

Код: Выделить всё

<?php
// Плагин предназначен для создании ссылки.

// В шаблоне используем так
// {link text="Ссылка" url="post/list?page=2&count=15"}
// {link text="Ссылка" url="post/list"}
// {link text="Ссылка" url="page=2&count=15"}

function smarty_function_link($params)
{

         $text = '';
         if(!empty($params['text'])){
             $text = $params['text'];
         }

         $parts = parse_url($params['url']);
         
         $queryArr  
= array();
         $pathStr = $parts['path'];
         $queryStr  = $parts['query'];
         
         if
(!empty($queryStr)){
             parse_str($queryStr,$queryArr);

            }elseif(substr_count($pathStr,'=')){        
              $queryStr 
= $parts['query'] = $pathStr;
              $pathStr  = $parts['path'] = '';
              parse_str($queryStr,$queryArr);
         }
         
        $urlArr 
= array();
        $urlArr = array_merge(array('0'=>$pathStr), $queryArr);

         return CHtml::link($text,$urlArr);
}
?>



Пример:
шаблон-> результат
Код: Выделить всё
{link text="Ссылка 1" url="post/list?page=73&count=15"}
<
a href="/mysite/post/list/page/73/count/15">Ссылка 1</a>

{
link text="Ссылка 2" url="post/list"}
<
a href="/mysite/post/list">Ссылка 2</a>

{
link text="Ссылка 3" url="page=73&count=15"}
<
a href="/mysite/site/index/page/73/count/15">Ссылка 3</a>

{
link text="Ссылка 4"}
<
a href="/mysite/site/index">Ссылка 4</a>

{
link text="Ссылка 5" url="http://www.yiiframework.ru/forum/viewtopic.php?f=9&t=241&p=3402#p3402"}
<
a href="/mysite/forum/viewtopic.php/f/9/t/241/p/3402">Ссылка 5</a>
 


примечание:
Ссылка 4 указана без параметра url, тогда выведется только домен где установлен фреймворк и текущий [контроллер/действие].
Ссылка 3 указана без [контроллера/действия] таким образом они будут прописаны как текущие текущие. И если были прописаны параметры, то они добавятся в ссылке
andry
 
Сообщения: 100
Зарегистрирован: 2009.11.08, 16:52


Вернуться в Авторский код и библиотеки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1