Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
alexeis
цитировать
Зарегистрирован: 13 Фев 2008 11:52:56 Сообщения: 4
|
Добавлено: 16 Мар 2008 21:44:44 Заголовок сообщения: Расширение существующего хелпера |
|
|
Волнует один вопрос, незнание решения которого вызывает реальный дискомфорт -- каким образом можно безболезненно расширить существующий хелпер.
Например хочу по другому вывести пейджиг во всем проекте, чтобы ссылки выводились не в span (например), а в таблице. Вариант -- сделать свой хелпер Xpaginator наследующий Paginator, но как тогда вывести его в View под переменной $paginator, т.е. чтобы его функции вызывались вместо функций родительского класса? |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 16 Мар 2008 22:13:37 Заголовок сообщения: |
|
|
скопируй его к себе в app\views\helpers и там поправь. тогда даже имя останется - только вот бэкпорты с новых версий самому придется делать |
|
Вернуться к началу |
|
|
alexeis
цитировать
Зарегистрирован: 13 Фев 2008 11:52:56 Сообщения: 4
|
Добавлено: 17 Мар 2008 09:00:08 Заголовок сообщения: |
|
|
KPOTOB писал(а): | скопируй его к себе в app\views\helpers и там поправь. тогда даже имя останется - только вот бэкпорты с новых версий самому придется делать |
Как-то не по DRY получается.
Похоже самым оптимальным остается создание своих хелперов-наследников и замена ими существующих в файлах view, типа
Код: |
$paginator = clone($xpaginator);
|
Еще можно поковыряться в классе View libs\view\view.php, в функции _loadHelpers, вопрос снова как этот класс расширить, логичное расширение через AppView разработчиками опять не предусмотрено. |
|
Вернуться к началу |
|
|
DeeperMD
цитировать
Зарегистрирован: 08 Фев 2008 15:04:11 Сообщения: 144 Откуда: $Молдова->Кишинёв->Буюканы()
|
Добавлено: 17 Мар 2008 12:04:44 Заголовок сообщения: |
|
|
Зачем городить огород..
Создаете класс на основе класса хелпера который хотите проапгрэйдить и усё.. и в чём проблема..
Но если совсем красиво по правилам пирожкка, то просто создаете свой хелпер который юзает класс родитель и усё..
что-то типа этого:
Код: | <?
class LinkHelper extends Helper
{
var $helpers = array('Html');
function makeEdit($title, $url)
{
// Используем HTML Хелпер для извлечения
// форматированных данных:
$link = $this->Html->link($title, $url, array('class' => 'edit'));
return $this->output("<div class=\"editOuter\">$link</div>");
}
}
?> |
|
|
Вернуться к началу |
|
|
alexeis
цитировать
Зарегистрирован: 13 Фев 2008 11:52:56 Сообщения: 4
|
Добавлено: 18 Мар 2008 08:41:23 Заголовок сообщения: |
|
|
Вот конкретная проблема: везде для вывода времени используется $time->nice($date), а затем вдруг понимаешь что нужно то выводить название месяца полностью и по русски, и дату в другом виде. И как это правильно разрулить, не создавая новую копию TimeHelper в проекте?
Вообще такое ощущение что с точки зрения возможности легкого расширения правильным (хотя опять не оптимальным) путем будет с самого начала в проекте использовать любые сторонние хелперы только как родителей для собственных, т.е. всюду во View использовать только $xhtml, $xtime и т.д.
А вот красивым способом легко расширять функциональность хелперов и при этом не раздувать код было бы такое объявление хелперов Код: |
var $helpers = array('html'=> 'Html', 'time' => 'Xtime')
|
Но увы, без хакания ядра такое реализовать пока не получается. |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 18 Мар 2008 20:33:48 Заголовок сообщения: |
|
|
alexeis
Тикет заведи если нет еще такого
А вообще - cake и родителя не умеет автоматом загружать
Да и nate у себя на уме канкретно |
|
Вернуться к началу |
|
|
alexeis
цитировать
Зарегистрирован: 13 Фев 2008 11:52:56 Сообщения: 4
|
Добавлено: 26 Мар 2008 14:10:14 Заголовок сообщения: |
|
|
хм, поглядел, кажись в branch 1.2.x.x. реализовано как я хочу |
|
Вернуться к началу |
|
|
|