Модель Helper Zend - PullRequest
       9

Модель Helper Zend

4 голосов
/ 02 октября 2010

из того, что я знаю, есть только помощник действия и помощник вида, доступные в Zend Framework.

есть ли модель помощника?

или как мы можем реализовать модель помощника?

Ответы [ 3 ]

2 голосов
/ 02 октября 2010

В ZF нет ничего, фактически называемого помощником модели, но если ваша модель обращается к таблице базы данных, вы можете создать ее как класс, расширяющий Zend_Db_Table_Abstract. Смотрите примеры в руководстве ZF: http://framework.zend.com/manual/en/zend.db.table.html

1 голос
/ 16 августа 2012

В Zend Framework ничего не определено для помощников моделей, как для помощников представлений, однако вы можете обойти это и сохранить дизайн приложения (избегайте использования папки библиотеки).

СпособЯ делаю это путем добавления папки Helper внутри модели .Затем вы должны назвать свой класс следующим образом:

class Application_Model_Helper_DateHelper
{
...
}

Тогда автозагрузчик позаботится о его поиске и загрузке.

К сожалению, это наименование немного отличается от того, как вы это делаетев папке просмотров.В папке views можно создать папку с именем helpers и использовать соглашение об именах, например:

class Zend_View_Helper_DarkBlueMenu extends Zend_View_Helper_Abstract 
{
...
} 

Однако, если вы назовете папку внутри модели как помощники тогда классы внутри него должны быть названы так:

class Application_Model_helpers_DateHelper
{
...
}
0 голосов
/ 21 сентября 2011

Сначала я добавляю эту строку в мой файл конфигурации, т.е. application.ini:

includePaths.library                    = APPLICATION_PATH "/../library"

Затем я добавляю класс

class App_Model_Helper {   
    public static function resultAggregation($results) {}
    //.... all the helper you need
}

в файле, помещенном в ..library\App\Model\Helper.php

Это единственный способ найти код, который я использую в модели.

Затем из модели можно вызвать вспомогательный метод:

App_Model_Helper::resultAggregation($results);

Я знаю, что это нарушает OOD, поэтому, если у кого-то есть лучшее и более чистое решение, я был бы очень признателен.

...