Где я могу определить функции просмотра в CakePHP? - PullRequest
0 голосов
/ 31 августа 2010

У меня есть процедура модификатора для отображения «даты» события.

        if($event['Event']['is_multi_day']){
        if( date('n',strtotime($event['Event']['start_day']) ) ==  date('n',strtotime($event['Event']['end_day'])) )
            $date = date('j',strtotime($event['Event']['start_day'])).' - '.
                date('j',strtotime($event['Event']['end_day'])).' '.
                date('M',strtotime($event['Event']['end_day']));
        else
            $date = date('j',strtotime($event['Event']['start_day'])).' '.
                date('M',strtotime($event['Event']['start_day'])).' - '.
                date('j',strtotime($event['Event']['end_day'])).' '.
                date('M',strtotime($event['Event']['end_day']));    

    }else{
        $date = date('j M', strtotime($event['Event']['start_day']));
    }

Я должен включать этот блок кода на каждой странице, где я отображаю событие.Как мне определить для этого функцию, которую можно вызывать из представлений, которые я хочу?

Ответы [ 3 ]

1 голос
/ 31 августа 2010

Мне кажется, что вы собираетесь использовать это в цикле, который отображает количество событий, и ваш код будет далеко не оптимальным в этой ситуации.

Я думаю, вы можете уменьшить эту строку:

if( date('n',strtotime($event['Event']['start_day']) ) ==  date('n',strtotime($event['Event']['end_day'])) )
)

до:

if($event['Event']['start_day']==$event['Event']['end_day'])

(или что-то подобное, сравнивающее сохраненное значение без форматирования. Форматирование предназначено для отображения, а не для алгоритмического сравнения)

и это:

date('j',strtotime($event['Event']['end_day'])).' '.date('M',strtotime($event['Event']['end_day']));

до:

date('j M',strtotime($event['Event']['end_day']));

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

Лично, поскольку это функция отображения, я бы держал ее в стороне от просмотра (в отличие от контроллера) и, вероятно, сделал бы это как элемент с переданными параметрами - см. http://book.cakephp.org/view/560/Passing-Variables-into-an-Element

1 голос
/ 31 августа 2010

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

0 голосов
/ 31 августа 2010

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

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