4


zend framwork 2 で SeparatorToSeparator() フィルターを使用してデータをフィルター処理したいと思います。
コンストラクターに 2 つの引数 (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'
                                )
                     )
            ),
        ));

次のエラー メッセージが表示されました。

警告: preg_quote() は、パラメータ 1 が文字列であると想定します。配列は C:\wamp\www\tebipdevelopment\vendor\zendframework\zendframework\library\Zend\Filter\Word\SeparatorToSeparator.php の 92 行目に指定されています

この行を開き、次のようなエラー メッセージを出力しました。

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

結果

配列 ( [検索セパレータ] => a [置換セパレータ] => b)

その場合、search_separator は文字列ではなく配列に等しい

4

2 に答える 2

1

あなたが見つけたように、他のバリデーターとは異なり、バリデーターという言葉はオプションの配列を受け入れません。私が使用した回避策は、最初にフィルターという単語をインスタンス化し、必要なコンストラクターパラメーターを渡し、そのインスタンスをフィルター仕様に追加することでした...

$wordFilter = new \Zend\Filter\Word\SeparatorToSeparator('a', 'b');

$inputFilter->add(array(
    'name' => 'supplierName',
    'required' => true,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
        $wordFilter,
    ),
));
于 2013-07-30T17:22:52.137 に答える