Форум программистов, компьютерный форум, киберфорум
PHP: Фреймворки
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/32: Рейтинг темы: голосов - 32, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 114

Вызов php функции в Smarty

20.03.2014, 18:53. Показов 6121. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня! Столкнулся с тем, что не знаю как вызвать php функцию с параметром в Smarty.

Функцию без параметра я юзаю так:

PHP
1
$smarty->assign('name', myFunck);
а вот как с параметром, не знаю

Например:

PHP
1
2
3
function myFunck($num){
if($num > 0){echo 'is good';}else{echo 'is not good';}
}
Если вызывать тем методом, который я описал выше, то там можно использовать только статический аргумент, а мне это не подходит, т.е. аргумент всегда будет меняться


Как быть?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2014, 18:53
Ответы с готовыми решениями:

Вызов функции js внутри условия Smarty
Столкнулся с проблемой вызова существующей функции js в зависимости от условия smarty. Шаблон на данный момент имеет такой вид: ...

Вызов функции js в php скрипте и передача значения js в php скрипт
Доброе время суток.! Подскажите пожалуйста как можно (и можно ли вообще) вызвать функцию js на стороне сервера и потом результат...

Вызов функции PHP из JS
Друзья, подскажите начинающему: Есть функция в PHP: function AddEntry() { session_start(); ...

8
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
20.03.2014, 22:23
Тут надо smarty знать, перемещу
Костыльно - глобалкой
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 114
21.03.2014, 01:33  [ТС]
Есть еще вариант создать свой плагин, но на мой взгляд ради одной функции это не очень удобно
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.03.2014, 06:48
А что нужно то? Может есть варианты проще? например создать метод в классе смарти
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 114
21.03.2014, 11:32  [ТС]
Есть класс Ads и в нем есть метод получения под категории и этот метод принимает в качестве параметра имя категории и возвращает массив с под категориями. Всё это работает с базой.
Не хотелось бы использовать плагин потому, что тогда один класс получится в разных местах, часть функций в классе будет, а вторая часть вообще в другом месте. Поэтому хотел бы использовать по возможности функцию assign.

Если использовать так:
PHP
1
$smarty->assign('test', $myclass->myFunc('1'));
если передавать статический параметр, то оно работает так как надо, но дело в том, что этот вариант не подходит. Т.к. как в файле шаблона у меня есть эта переменная, которая содержит в себе имя категории.
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.03.2014, 12:30
PHP
1
2
3
4
5
function myFunck($num){
    if($num > 0) { echo 'is good'; } else { echo 'is not good'; }
}
 
$smarty->assign('name', myFunck);
Ну и далее например есть какие то переменные

PHP
1
2
$smarty->assign('var1', 5);
$smarty->assign('var2', -3);
А в шаблоне пишем так
HTML5
1
{$var1|myFunc}, {$var2|myFunc}
Добавлено через 4 минуты
Только вместо
PHP
1
if($num > 0) { echo 'is good'; } else { echo 'is not good'; }
лучше использовать
PHP
1
if($num > 0) { return 'is good'; } else { return 'is not good'; }
1
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 114
21.03.2014, 13:03  [ТС]
Спасибо! Я видел такой вариант, но не понял, как его использовать. Я сделал через registerObject.

Сейчас столкнулся с таким:
PHP
1
2
3
4
5
{foreach from={sub->getSubheadings p1='Недвижимость'} item=mitem}
    <span class="item">
        {$mitem}
    </span>
{/foreach}
Если выводить просто {$mitem}, то там видно такой массив
Array ( [0] => Аренда квартир [1] => Аренда комнат )

как только я указываю {$mitem[0]}, то он выводит просто "A" от слова Array

Что я делаю не так?
0
 Аватар для Dolphin
814 / 797 / 201
Регистрация: 21.09.2012
Сообщений: 2,656
21.03.2014, 13:37
Цитата Сообщение от mizha Посмотреть сообщение
как только я указываю {$mitem[0]}
HTML5
1
{$mitem.0}
0
0 / 0 / 0
Регистрация: 11.04.2013
Сообщений: 114
21.03.2014, 18:14  [ТС]
Результат тот же

Добавлено через 4 часа 28 минут
C задачей справился. В общем напишу итоги решения всех моих вопросов в этой теме:
1. Как вызвать функцию с параметром в шаблоне .tpl
Ответ: в php файле надо зарегистрировать ваш объект класса таким вот способом
PHP
1
$smarty->registerObject("test", $myclass)
и в шаблоне надо его использовать так:
PHP
1
{test->myFunck p1='значение'}
2. Не получалось перебрать массив по той причине, что я делал я делал return $myArray и по какой-то причине не мог его разобрать в шаблоне с помощь
PHP
1
{foreach}{/foreach}
и решил проблему тем, что распечатывал информацию непосредственно из самой функции таким способом
PHP
1
2
3
for($i = 0; $i < count($myArray); $i++){
      echo $myArray[$i];
}
Вот и все решения моих вопросов...

Если кому-то надо будет подсказать, что-то с подобными вопросами, то пишите мне смело в скайп: g.m.o777

Всем спасибо за ваши ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.03.2014, 18:14
Помогаю со студенческими работами здесь

Вызов JS функции из PHP
Есть такая функция в js для рендома высоты объекта function pos_rot(min, max) { var $pos_rot; return Math.floor(Math.random()...

Вызов php функции
Здравствуйте! Мне нужно вызвать php-функцию и результат поместить в блок. Функция вызывается, но не передается index.php &lt;div...

Вызов js функции в php функции что в js
В общем имеем такое извращение &lt;script&gt; ... document.write(&quot;&lt;?php echo Consultationscalendar::classTD($teacherId) ?&gt;&quot;); ...

Вызов js функции через php
На амазоне есть js функция которая генерирует определенное значение, потом это значение добавляется в форму и отправляется вместе с post...

Вызов PHP-функции кнопкой
вызвать функцию кнопкой php? возможно ли? что то я уже столько вариантов перепробовал но никак не вызываеться и можно ли на php как то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru