0

こんにちは、数値フィールドのあるフォームがあります。正規表現を使用してフィールドを検証します。そのため、パターン属性を要素に追加しました。ただし、formText を使用すると、html は正規表現パターンをエスケープします。

//inside the form _construct
$this->add(array(
            'name' => 'number',
            'type' => 'text',
            'options' => array(
                'label' => 'Number',
            ),
			'attributes' => array(
				'pattern' => '/^(\+)?((\d)+(-|\s)?)+$/',
				'maxLength' => '20',
				'id' => 'number',
			),
        ));

そしてその形で

<?php echo $this->formText($form->get('number')); ?>

その時の結果は

<input type="text" name="number" pattern="&#x2F;&#x5E;&#x28;&#x5C;&#x2B;&#x29;&#x3F;&#x28;&#x28;&#x5C;d&#x29;&#x2B;&#x28;-&#x7C;&#x5C;s&#x29;&#x3F;&#x29;&#x2B;&#x24;&#x2F;" id="number" value="" maxlength="20">

正規表現パターンをエスケープせずに数値フィールドをフォームに追加するにはどうすればよいですか?

4

1 に答える 1

1

フォーム ビュー ヘルパーは、基本的なセキュリティ機能と自動化機能を提供して、そのように動作するはずです。したがって、そうしない場合は使用しないでください。

<input type="<?php echo $form->get('number')->getType(); ?>" pattern="type="<?php echo $form->get('number')->getAttribute('pattern'); ?>" value="<?php echo $form->get('number')->geValue(); ?>">

何を表示する必要があるのか​​ わかりませんが、「私の」アプローチの一般的なアイデアが得られるはずです。値のようなものを手動でエスケープすることもできます:

$this->escape($form->get('number')->geValue())

これが面倒な場合は、いつでもこれを行うヘルパーを作成できます。属性のエスケープをオフにするオプションを使用して PR を作成することもできますが、デフォルトでオンにするのが賢明です。

于 2015-03-07T10:48:52.290 に答える