Доктрина Symfony 1.4: как вызвать функцию на странице шаблона?

#php #symfony1 #symfony-1.4

#php #symfony1 #symfony-1.4

Вопрос:

Как мы вызываем функцию php на странице шаблона в symfony 1.4 doctrine. Предположим, я хочу вызвать функцию add() на странице шаблона, где я должен определить функцию add()? Буду ли я делать это на странице действий? Можем ли мы определить эту функцию на странице действий?

Ожидание быстрого ответа

Комментарии:

1. Зачем вам нужна функция в шаблоне? Почему бы вам не запустить функцию в действии и просто не передать результат в шаблон в качестве переменной

2. Мне нужно, чтобы определенная задача выполнялась 5-6 раз на странице шаблона. Как это происходит в цикле. Я создаю модуль расписания, и классы должны быть расположены в виде сетки. Таким образом, функция schedule() должна вызываться для каждой строки отдельно

3. Старайтесь избегать «ожидания быстрого ответа», «пожалуйста, ответьте как можно скорее»; все хотят быстрого ответа, и лучше не проявлять нетерпения 🙂

Ответ №1:

Вы можете использовать помощник. Например:

apps/yourapp/lib/helper/myNewHelper.php

 <?php

 if (!function_exists("yourfunc"))
    {

     function yourfunc($variable){

         // Your code here

                                }
        return $variable;
                               }
    }
?>
  

И в themplate, например

apps/yourapp/modules/yourmodule/templates/indexSuccess.php

 <?php use_helper('myNew'); ?>

<?php echo yourfunc($data->getSomeData()) ?>
  

Ответ №2:

Вы не должны выполнять действия внутри шаблона. Для этого вы должны разделить свой код на небольшие components части. В вашем cicle (в данном случае foreach, возможно, в вашем):

 <?php foreach($array => $param): ?>
    <?php include_component('module', 'action', array('param' => $param));
<?php endforeach ?>
  

А затем в вашем components.class.php вы выполняете свою timetable($param); функцию, отображая результат в частичном виде.

Комментарии:

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