Вызов функции исчисления из представления в CakePhp? - PullRequest
1 голос
/ 22 марта 2012

Abstract

Я хотел бы выполнить исчисление из $start_date и $end_date, извлеченных из таблицы MySQL.Где я должен поместить свою функцию исчисления, чтобы получить к ней доступ в моем представлении?


Detail

Я новичок в CakePhp.У меня есть этот контроллер:

class PostersController extends AppController {
    var $name = 'Posters';
    function index (){ 
    $request  = $this->Poster->find('all');
    $this->set('posters', $request);
}

В моей таблице MySQL для Posters у меня есть поля $start_date и $end_date.Я хочу иметь функцию для выполнения исчисления для продолжительности, используя эту функцию.

function PosterDuration ($start_date, $end_date){
    $duration = $start_date->diff($end_date);
    return $duration;
}

Я хочу просмотреть $duration в моем представлении для каждого плаката.Однако я не знаю, куда поместить эту логику функции.

  1. Я подумал поместить ее как частную функцию в моем PostersController, однако я не знаю, смогу ли я получить к ней доступ из Posters.ctp View.
  2. Я думал о создании компонента с именем DuractionCalculusComponent.
  3. Может ли это быть поведение?

Поскольку я новичок в CakePhp, у меня естьскромные знания и не знаю, какой вариант выбрать.

Ответы [ 2 ]

0 голосов
/ 22 марта 2012

Когда все значения доступны в контроллере. Просто вычислите разницу и передайте вычисленный результат вашему виду, используя функцию set или set compact.

$this->set('duration', $duration);

Если вы используете это в нескольких местах, вы можете обратиться за помощью. Для этого вам нужно передать переменные. База данных Дона вспомогательные файлы. Это не очень хорошая практика.

0 голосов
/ 22 марта 2012

, если это только для представления / вывода в слое представления, сделайте его вспомогательным и назовите его «по требованию» для каждой отображаемой записи.

echo $this->Calculus->diff($date1, $date2);

, если это необходимо в контроллере / моделиУровень, с которым можно работать, в некотором роде может лучше подходить в качестве поведенческого подхода или некоторого обратного вызова afterFind ().

Это действительно зависит от варианта использования.так что не так много здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...