我需要帮助,找到处理表格/输入过滤器/保湿器的最佳实践。
如果我理解正确
1。)服务层将处理,数据如
2.)控制器将处理
之间的粘合剂优点:
DRY原则 你将独立于输出结构(json,rest,plain output等)
表单可以空白使用,我的意思是,您可以使用没有注入过滤器,水合器的表单,只有在用户通过例如发布请求发送数据时才会注入
但是在这里我得到了我的错误,我不知道如何定义
之间的粘合剂我会按服务过滤/验证数据,还是调用控制器中的getter来注入表单?
我希望这是可以理解的
问候
答案 0 :(得分:0)
服务,可以是执行某些特定任务的任何对象,这些对象将被整个应用程序中的任何模型或代码使用,该服务也可以通过服务配置公开,例如。我创建了一个服务,将格式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进行交易,这是我方法的最后一行。
表单这是ZF2提供的类,表示一个表单作为数据模型,表示所有html表单元素以及Form对象,我们有验证器和过滤器,可以减少大部分表单验证工作
希望这可能会提出一个想法,如果需要更多说明,我会添加更多详细信息