我想在 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/