Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: дополнения к шаблонизатору.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вывод значений в цикле....
Toshak
Отправлено: 20 Октября, 2010 - 17:51:36
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Доброго времени суток,форумчани.
Сталкнулся с такой проблемой,при написании шаблонизатора.Ну сразу перейду к делу...
У меня есть массив.
PHP:
скопировать код в буфер обмена
  1.  
  2. $ar[1]['name'] = 'Anton';
  3. $ar[1]['last_name'] = 'Velichko';
  4. $ar[2]['name'] = 'Alex';
  5. $ar[2]['last_name'] = 'Alexseev';
  6.  

Есть файл шаблона
CODE (html):
скопировать код в буфер обмена
  1.  
  2. %name%<br/>
  3. %last_name%<br/>
  4.  

Ну что то так...
Задача: Нужно сделать функцию,которая будет заменять в шаблоне ключи,на значение соответсвующего массива ,и затем выводить все одной строкой.
Т.е. как бы циклы в шаблонах.
 
 Top
garvey
Отправлено: 20 Октября, 2010 - 17:55:12
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Велосипед? Может лучше Смарти? Хотя и в php нормальный синтаксис:
 
 Top
Toshak
Отправлено: 20 Октября, 2010 - 19:42:50
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




та не ) Не вилосипед)Смарти слишком грамозд,а тут только то что мне надо.
 
 Top
OrmaJever
Отправлено: 20 Октября, 2010 - 21:05:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Явот только непонял нужно заменить %name% на несколько значений? Если нет то как то так
PHP:
скопировать код в буфер обмена
  1. ( ... )
  2. function set($key,$var){
  3.       global $array;
  4.       $array[$key] = $var;
  5. }
  6.  
  7. $file = file_get_contents('файл_шаблона');
  8. //если нужно то эту функцию можно вызывать в цикле.
  9. set('%name%', $ar[1]['name']);
  10. set('%last_name%', $ar[1]['last_name']);
  11.  
  12. foreach($array as $find => $replace){
  13.         $return = str_replace($find, $replace, $this->template);
  14. }
  15.  
  16. echo $return;
  17.  


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Toshak
Отправлено: 22 Октября, 2010 - 08:43:22
Post Id


Новичок


Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Чуть не то. Рузельтатом должно быть
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Anton
  3. Velichko
  4. Alex
  5. Alexseev
  6.  
 
 Top
OverNik
Отправлено: 30 Октября, 2010 - 08:18:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 182
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




OrmaJever дал рабочий пример простого шаблонизатора. Только что бы он выводил в цикле - нужно поместить его в цикл. %) Глупо и просто. единственый минус такого шаблонизатора file_get_contents, при большом количестве пользивателей сайту будет очень тяжело.
Вот кстати ещё один примерчик с той же песни:
PHP:
скопировать код в буфер обмена
  1.  
  2. function tpl($in, $aut, $file, $echo=1)
  3. {
  4.     if(!file_exists($file))
  5.     {
  6.         die("File not found: ".$file);
  7.     }
  8.     $get = file_get_contents($file);
  9.     $get = str_replace($in, $aut, $get);
  10.     if($echo == 1)
  11.     {
  12.         echo $get;
  13.     }
  14.     else
  15.     {
  16.         return $get;
  17.     }
  18. }
  19.  

Пример использование:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $in = array("{NAME}", "{NAME2}");
  4. $aut = array("Наташа", "Костя");
  5. tpl($in, $aut, "/tpl/test.tpl");
  6.  
  7. #test.tpl
  8. /*Привет {NAME}, как дела?<br>
  9.  - О, привет {NAME2}!!!
  10.  
  11. */
  12. #
  13. ?>
  14.  

Сложней:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. //Файл /tpl/natasha.tpl
  4. $inNa = array("{HELLO}");
  5. $autNa = array("Привет!");
  6. $natasha = tpl($inNa, $autNa, "/tpl/natasha.tpl", 0); //Задан параметр 0 - (1 - echo, 0 - return)
  7.  
  8. //Файл /tpl/kolya.tpl
  9. $inK = array("{HELLO}");
  10. $autK = array("О приветик :)");
  11. $kolya = tpl($inK, $autK, "/tpl/kolya.tpl",0);
  12.  
  13. //Файл /tpl/names.tpl
  14. $inN = array("{KOLYA}", "{NATASHA}");
  15. $autN = array($kolya, $natasha);
  16.  
  17. #Файл names.tpl
  18. /*
  19.  Диалог Натальи :{NATASHA}<br>
  20.  Диалог Николая: {KOLYA}<br>
  21. */
  22. ?>
  23.  

Вобщем смотри, это только пример и то наверное не самый удачный. Проще всего если будешь использивать какую либо библиотеку, можно не только с огромного смарти начинать, а взять что-то по мельче!

(Отредактировано автором: 30 Октября, 2010 - 08:24:38)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB