Zend Controller - PullRequest
       1

Zend Controller

0 голосов
/ 01 сентября 2010

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

Например, у меня есть такие функции:

 protected function _process($values)
    {
        // Get our authentication adapter and check credentials
        $adapter = $this->_getAuthAdapter();
        $adapter->setIdentity($values['username']); 
        $adapter->setCredential($values['password']);

        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($adapter);
        if ($result->isValid()) {
            $user = $adapter->getResultRowObject();
            $auth->getStorage()->write($user);
            return true;
        }
        return false;
    }

   protected function _getAuthAdapter() {

        $dbAdapter = Zend_Db_Table::getDefaultAdapter();
        $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);

        $authAdapter->setTableName('users')
            ->setIdentityColumn('username')
            ->setCredentialColumn('password')
            ->setCredentialTreatment('SHA1(CONCAT(?,salt))');

                return $authAdapter;
    }

Что бы вы порекомендовали сделать,Может быть, создать еще один каталог под названием custom_classes и таким образом включить файл в мой контроллер?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2010

Учитывая ваш пример, я бы поместил это в некий ACL-центрированный Zend_Controller_Plugin класс и зарегистрировал бы этот класс в вашей начальной загрузке, чтобы обеспечить его постоянную работу.

Кроме того, в зависимости от того, что вы делаете,логика может войти в одну из ваших моделей.

Модели должны представлять собой набор информации, составляющей какую-либо сущность, класс Model также должен отвечать за чтение, обновление, удаление и добавление новых моделей.

Например, пользовательМодель может представлять пользователя в таблице в вашей базе данных.Он может содержать такие функции, как updateFailedLogins(), updateLogins() и специальные функции, связанные с процессом входа в систему для этой конкретной модели пользователя.

0 голосов
/ 01 сентября 2010

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

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

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

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