Пользовательская функция, которую я могу использовать во всех своих контроллерах - PullRequest
5 голосов
/ 26 марта 2012

У меня есть проект, и я использую ZendFramework, также я новичок в этой среде.

Так что моя проблема в том,

Я хочу создать пользовательскую функцию, котораяЯ могу использовать во всех контроллерах.Пример: я хочу создать функцию, которая будет проверять поле ввода, в котором я буду использовать trim, htmlspecialchars и mysql_real_escape_string.Я хочу получить доступ к этой функции во всех контроллерах.

У меня есть решение для этого, я создам эту функцию на каждом контроллере, который у меня есть, что, я думаю, не лучшее решение.

Спасибо

Ответы [ 3 ]

8 голосов
/ 26 марта 2012

Базовый контроллер - это решение, но не лучшее для меня.Вы должны написать свой собственный Action Helper , они предназначены для этого.

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

Дополнительная информация здесь, в руководстве .

Давайте посмотрим, как зарегистрировать ваш путь к Помощнику действий, добавьте его в файл application.ini:

resources.frontController.actionHelperPaths.My_Controller_Action_Helper = "My/Controller/Action/Helper/"

, где My - это имя вашей пользовательской библиотеки.

Ив пути My/Controller/Action/Helper/ вы можете добавить файл MyActionHelper.php следующим образом:

class My_Controller_Action_Helper_MyActionHelper extends Zend_Controller_Action_Helper_Abstract
{
    public function direct($input)
    {
        $output = mysql_real_escape_string($input);
        // trim, etc.
        return $output;
    }
}

Это все, что вам нужно сделать!Наконец, вы можете получить доступ к своему помощнику действий из любого контроллера, используя $this->_helper->myActionHelper($input);.

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

1 голос
/ 26 марта 2012

Создайте файл Util.php, поместите его в папку библиотеки и добавьте в него столько функций, сколько вам нужно, затем откройте index.php (внутри публичной папки)

добавить

require_once 'Util.php';

после строки

require_once 'Zend/Application.php';

Так, например, ваш Util.php может выглядеть как

    function mysql_real_escape_string($value)
    {
    return $value 
    }

    function logger($value)
    {
      Zend_Regsitry::get('logger')->log($value);
    }

  function _T($translate)
{
return Zend_Registry::get('translator')->translate($translate);
}

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

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

Zend Framework имеет Zend_Controller_Action_Helper .

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