duanlujiaji10335 2014-06-12 15:04
浏览 12
已采纳

zf2尝试将输入过滤器注入服务中

I'm attempting to create a custom filter and inject it into a service via factory.

use Zend\InputFilter\InputFilter; 
class WSRequestFilter extends InputFilter{

    protected $inputFilter;

    public function init(){
        $this->add( array(
            'name' => 'apiVersion',
            'required' => true,
            'filters' => [
                array('name' => 'Real'),
...

In Module.php...

public function getServiceConfig(){
    return array(
        ...
        'factories' => array(
            'Puma\Service\WebServiceLayer' => function($sm) {
                $wsRequestFilter = new Filter\WSRequestFilter();
                $wsRequestFilter->init();
                $wsl = new Service\WebServiceLayer($wsRequestFilter);
                return $wsl;
            },
        ),
    );
}

But I get service not found exception when executing $wsRequestFilter->init();. I have also tried to initialize the filter using the InputFilterManager similar to here but I got a service not found trying to access the manager via $serviceManager->get('InputFilterManager'). I think I am missing something fundamental here.

  • 写回答

1条回答 默认 最新

  • doude4924 2014-06-12 15:18
    关注

    The init() method invoked automatically by InputFilterManager just after the filter object created. You don't need to invoke manually.

    Add this to your module configuration:

    'input_filters' => array(
        'invokables' => array(
            'ws-request-filter' => '\YourModule\Filter\WSRequestFilter',
         ),
    ),
    

    And change your service factory like below:

    public function getServiceConfig(){
        return array(
            ...
            'factories' => array(
                'Puma\Service\WebServiceLayer' => function($sm) {
                    $filter = $sm->get('InputfilterManager')->get('ws-request-filter')
                    $wsl = new \YourModule\Service\WebServiceLayer($filter);
                    return $wsl;
                },
            ),
        );
    }
    

    It should work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 西南科技大学数字信号处理
  • ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
  • ¥30 STM32 INMP441无法读取数据
  • ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥15 pyqt信号槽连接写法
  • ¥500 把面具戴到人脸上,请大家贡献智慧,别用大模型回答,大模型的答案没啥用
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。