php - Zf2 如何使用过滤器类传递参数?

标签 php forms zend-framework filter zend-framework2


我想在 zend framwork 2 中使用 SeparatorToSeparator() 过滤器来过滤我的数据。
如何将两个参数(setSearchSeparator 和 setReplacementSeparator)传递给构造函数?

$inputFilter->add(array(
    'name' => 'supplierName',
    'required' => true,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
        array('name'=>"Word\SeparatorToSeparator"
    ),
));

路径:zendframework/bin/libary/Zend/Filter/Word/SeparatorToSeparator.php

class SeparatorToSeparator extends AbstractFilter
{
    protected $searchSeparator = null;
    protected $replacementSeparator = null;



       /**
         * Constructor
         *
         * @param  string  $searchSeparator      Separator to search for
         * @param  string  $replacementSeparator Separator to replace with
         */
        public function __construct($searchSeparator = ' ', $replacementSeparator = '-')
        {
            $this->setSearchSeparator($searchSeparator);
            $this->setReplacementSeparator($replacementSeparator);
        }

已更新

$inputFilter->add(array(
            'name' => 'supplierName',
            'required' => true,
            'filters' => array(
                array('name' => 'StripTags'),
                array('name' => 'StringTrim'),
                array('name'=>'Word\SeparatorToSeparator',
                      'options' => array(
                                    'search_separator'      => 'a',
                                    'replacement_separator' => 'b'
                                )
                     )
            ),
        ));

我收到此错误消息:

Warning: preg_quote() expects parameter 1 to be string, array given in C:\wamp\www\tebipdevelopment\vendor\zendframework\zendframework\library\Zend\Filter\Word\SeparatorToSeparator.php on line 92

我打开了这一行,并打印了这样的错误消息。

print_r($this->searchSeparator);
print_r($this->replacementSeparator);

结果

数组 ( [search_separator] => a [replacement_separator] => b )

在这种情况下,search_separator 等于数组而不是字符串

最佳答案

请注意,您不需要 setter,但我已经添加了它们,过滤器将尝试使用 setter(如果存在)(setCamelCase() 表示法)。

class SeparatorToSeparator extends AbstractFilter
{
    protected $searchSeparator = null;
    protected $replacementSeparator = null;

    public function setSearchSeparator($val)
    {
        $this->searchSeparator = $val;
    }

    public function setReplacementSeparator($val)
    {
        $this->replacementSeparator = $val;
    }
}

现在您可以设置选项:

$inputFilter->add(array(
    'name' => 'supplierName',
    'required' => true,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
        array(
           'name'=>"Word\SeparatorToSeparator"
           'options' => array(
               'search_separator'      => 'bla',
               'replacement_separator' => 'bla'
           )
        )
    ),
));

关于php - Zf2 如何使用过滤器类传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17941673/

相关文章:

php - 返回 array_intersect 作为 bool 值

php - MySQL 查询不是通过 PHP 提交而是作为原始查询提交

php - 如何在数据库中创建和存储表单值

mysql - Zend Framework中通过ssl连接mysql服务器

mysql - 计算大型 mysql 查询中的行数 (zend)

php - 如何处理从服务器收到的 xml 响应?

php - 如何使用 php 和 mysql 使用纬度和经度进行几何搜索

javascript - 如何使用ajax将STL文件从js发送到没有表单数据的php

php - 如何在 ajax 调用中操作 URL?

Android webview 在方向改变时保留表单数据