Служба может быть любым объектом, выполняющим определенную задачу, которая будет использоваться любыми моделями или кодами во всем приложении. Служба также может быть представлена через конфигурацию службы, например. Я создал сервис для преобразования даты формата dd/mm/yyyy в mysql и наоборот.
Вы спросили, может ли фильтр/валидатор быть включенным в качестве службы, да, это возможно, но вам нужно N функций для обработки различных типов форм, что отклоняется от основной идеи службы, для этой цели у нас могут быть модели, которые могут предоставлять фильтры требуется по форме
Контроллеры содержат действие, которое содержит код, который является связующим звеном с моделями и представлениями, его основная цель — переход к следующему этапу действия (решения) на основе результата моделей. основная цель контроллера - управлять потоком приложения, поэтому он должен иметь как можно меньше строк кода, большая часть действий должна выполняться только в моделях, контроллеры только вызывают методы в моделях и принимают решение Бывший.
public function formAction(){
/* @var $model \GlsApi\View\Models\ViewModelInterface */
$model = $this->getServiceLocator()->get('Entry/BoxInfoViewModel');
$viewRenderModel = $this->getServiceLocator()->get('GlsApi/ViewRenderModel');
$model->getFormView($viewRenderModel);
return new \Zend\View\Model\JsonModel(array('form' => $viewRenderModel->getRenderedView(), 'formValues' => $model->getDefaultValues()));
}
public function infoAction(){
/* subscriber id or cardno */
$id = $this->params()->fromPost("id", 0);
$searchType = $this->params()->fromPost("st", 'subscriber');
/* @var $model \GlsApi\Models\ModelInterface */
$model = $this->getServiceLocator()->get('Entry/BoxInfoViewModel');
return new \Zend\View\Model\JsonModel($model->getInfo($id, $searchType)->getArrayCopy());
}
В первом действии я вызываю свою модель представления с помощью локатора службы, затем вызываю метод getFormView, который устанавливает частичное отображение формы и объекта формы для переданной модели представления и, наконец, вызывает метод getRenderView, который создает представление формы, все это мои пользовательские методы, которые я абстрагировал, чтобы упростить кодирование. Я построил свой RIA, который выполняет транзакции с использованием json, это последняя строка моего метода.
Form это класс, предоставленный ZF2 для представления формы как модели данных, которая представляет все элементы формы html вместе с объектами формы, у нас есть средства проверки и фильтры, которые сокращают большую часть работы по проверке формы.
Надеюсь, это может дать представление, если нужно больше разъяснений, поставьте конкретные вопросы, я добавлю больше деталей.
01.06.2014