3

配列の内容を持つフィールド要素にフィルタを適用するにはどうすればよいですか?

例えば:

$this->add(
  "name" => "tags",
  "type" => "text",
  "filter" => array(
    array("name" => "StripTags"),
    array("name" => "StringTrim")
  )
);

$tags[0] = "PHP";
$tags[1] = "CSS";

フィルタリングしようとすると、スカラー オブジェクトが除外され、配列が指定されているというエラーが表示されます。

4

4 に答える 4

11

現時点では、これは実際には不可能です。最善の策は、コールバック フィルターを使用して、各項目を個別にフィルター処理することです。このようなもの

$this->add(
  "name" => "tags",
  "type" => "text",
  "filter" => array(
    array("name" => "Callback", "options" => array(
       "callback" => function($tags) {
          $strip = new \Zend\Filter\StripTags();
          $trim = new \Zend\Filter\StringTrim();
          foreach($tags as $key => $tag) {
            $tag = $strip->filter($tag);
            $tag = $trim->filter($tag);
            $tags[$key] = $tag;
          }
          return $tags;
    }))
  )
);
于 2013-08-17T23:46:39.877 に答える
8

これは古いと思いますが、入力タイプを次のように指定して、期待どおりに処理ArrayInputできます。InputFilter

  "name" => "tags",
  "type" => "Zend\\InputFilter\\ArrayInput", // Treat this field as an array of inputs
  "filter" => array(
    array("name" => "StripTags"),
    array("name" => "StringTrim")
  )
于 2015-10-21T16:05:43.327 に答える