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 :: Помогите с синтаксисом SMARTY

 PHP.SU

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


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

> Описание: smarty
City
Отправлено: 14 Января, 2010 - 20:32:41
Post Id


Новичок


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


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




Всем привет!
Есть шаблон на смарти.
есть форма поиска, поле input.
Задача - сделать так чтобы значение value поля input исчезало при кликанье по нему курсором, на чистом html это выглядит так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <input type="text" value="Search" onclick="if(this.value == 'Search') {this.value =''};" onblur="if(this.value === '') {this.value = 'Search'};"/>
  3.  


А вот на Smarty такое не проканывает Недовольство, огорчение
Пробовал if брать в скобки {}, но всё ни то.
буду благодарен за помощь, заранее спасибо!
 
 Top
JustUserR
Отправлено: 14 Января, 2010 - 20:37:58
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




City Кстати я бы заменил onclick на onfocus - а то получится что если пользователь перейдет на поле с помощью tab то в поле останется слово Search что для данной задачи не совсем хорошо
Как возможное решение можете загнать код скрытия и показа слова Search в отдельную функцию и вызывать ее
Функция window.sh_inp=function(th) {if(th.value == "Search") {th.value =""}; if(th.value == "") {this.value = "Search"}; } и вызываете ее sh_inp(this)
И вообще откуда в вашем варианте на JS тройное равно - явная ошибка Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
City
Отправлено: 14 Января, 2010 - 20:57:48
Post Id


Новичок


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


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




JustUserR пишет:
Как возможное решение можете загнать код скрытия и показа слова Search в отдельную функцию и вызывать ее
Функция window.sh_inp=function(th) {if(th.value == "Search") {th.value =""}; if(th.value == "") {this.value = "Search"}; } и вызываете ее sh_inp(this)


Спасибо! Помогло! Огромное спасибо! А я мучался..
(Добавление)
И всё-таки интересно почему обычным способом
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <input type="text" value="Search" onclick="if(this.value == 'Search') {this.value =''};" onblur="if(this.value == '') {this.value = 'Search'};"/>
  3.  

в SMARTY не работает??? хм..
 
 Top
JustUserR
Отправлено: 14 Января, 2010 - 21:45:31
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




City пишет:
И всё-таки интересно почему обычным способом в SMARTY не работает??? хм..
Я smarty не пользуюсь но мне кажется что дело в обработке фигурных скобок как служебных - может их как-нибудь экранировать надо было
City пишет:
Спасибо! Помогло! Огромное спасибо! А я мучался..
Я рад что получилось таким методом Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Ins1ne
Отправлено: 14 Января, 2010 - 23:41:06
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


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




Если вам интересно правильное решение проблемы, вот выдержка из мануала:
Цитата:
Тэги literal позволяют воспринимать блоки данных буквально. Обычно они используются вместе с javascript или таблицами стилей, в которых фигурные скобки конфликтуют с синтаксисом разделителей. Весь текст внутри тэгов {literal}{/literal} не интерпретируется, а выводится "как есть".

т.е в вашем случае надо было сделать так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. {literal}
  3. <input type="text" value="Search" onclick="if(this.value == 'Search') {this.value =''};" onblur="if(this.value === '') {this.value = 'Search'};"/>
  4. {/literal}
  5.  
 
 Top
City
Отправлено: 15 Января, 2010 - 09:21:33
Post Id


Новичок


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


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




Ins1ne пишет:
т.е в вашем случае надо было сделать так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. {literal}
  3. <input type="text" value="Search" onclick="if(this.value == 'Search') {this.value =''};" onblur="if(this.value === '') {this.value = 'Search'};"/>
  4. {/literal}
  5.  


Спасибо, так тоже работает.

P.S>Я вижу Вы хорошо разбираетесь в СМАРТИ, если Вам не составит труда - посоветуйте пожалуйста какую-то литературу, сайт(http://www.smarty.net/), форум по Smarty.
Заранее спасибо.
 
 Top
JustUserR
Отправлено: 15 Января, 2010 - 11:05:45
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




Ins1ne То есть прямого способа проэкранировать данные не существут - ведь в принципе можно (Хотя бы ради взлома) внутри строки в JS пометить данные типа {/literal} и все уедет - может фигурные скобки можно экранировать (Как я и предположил выше - ведь дело именно в том что они являются служебными символами в smarty-щаблонизаторе Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Ins1ne
Отправлено: 15 Января, 2010 - 13:42:39
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Март 2009  


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




City пишет:

P.S>Я вижу Вы хорошо разбираетесь в СМАРТИ, если Вам не составит труда - посоветуйте пожалуйста какую-то литературу, сайт(http://www.smarty.net/), форум по Smarty.
Заранее спасибо.

я пользовался в своё время мануалом только Улыбка
JustUserR пишет:

Ins1ne То есть прямого способа проэкранировать данные не существут - ведь в принципе можно (Хотя бы ради взлома) внутри строки в JS пометить данные типа {/literal} и все уедет - может фигурные скобки можно экранировать (Как я и предположил выше - ведь дело именно в том что они являются служебными символами в smarty-щаблонизаторе Улыбка

Я просто особо сильно не вдавался в Smarty, возможно есть другие способы экранирования фигурных скобок, я навскидку сказал действующий Улыбка
Скачать файл: Smarty-2.6.7-docs.chm
Скачан раз: 130
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB