Вопрос оптимизации MVC Framework Zend - PullRequest
1 голос
/ 16 июня 2011

Просто быстрый логический вопрос.

У меня есть 2 контроллера Zend, а именно Merchant и Account.Merchant Controller имеет действие, называемое editAction.Мой вопрос заключается в том, возможно ли совершать те же действия в учетной записи без дублирования кода.Мне удалось создать включаемый файл для представления, но мне нравится иметь лучший способ управления моим кодом.В настоящее время у меня есть идея иметь вспомогательный класс и вызывать этот вспомогательный класс для обоих этих контроллеров.Но я знаю, что у кого-то было бы лучшее решение, чем это.Пожалуйста, помогите мне.

Спасибо

Ответы [ 2 ]

5 голосов
/ 16 июня 2011

Самое простое решение - расширить Zend_Controller_Action на ваш собственный базовый класс и добавить в него editAction ().Например, если у вас есть классы моделей с именами «Account» и «Merchant»:

abstract class My_Controller_Action extends Zend_Controller_Action
{
    protected $_modelName;

    public function editAction()
    {
        $model = new $this->_modelName();
        // Do your editing here.
    }
}

class AccountController extends My_Controller_Action
{
    protected $_modelName = 'Account';
}

class MerchantController extends My_Controller_Action
{
    protected $_modelName = 'Merchant';
}

Имейте в виду, что этот дизайн подразумевает, что код в editAction () будет работать как для учетных записей, так и для продавцов.

0 голосов
/ 16 июня 2011

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

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

$saver = new My_Editing_Class();
$saver->edit("account",$this->getRequest()->getPost()); // Editing "account" with the POST data.

Затем вы делаете свою магию внутри "My_Editing_Class".

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