0

私のアプリ ライブラリには、Zend_Form (ZF 1.*) を使用する入力フィルターがあります。

class My_InputFilter extends Zend_Form
{
    public function init()
    {
        $this->addElement(
            'text', 'dateFrom', array(
                'required' => true,
                'filters' => array(
                    'dateTimeTotimeStamp'
                ),
                'validators' => array(
                    array('date', false, array('format' => 'Y-m-d H:i:s'))
                )
            )
        );
    }
}

次に、アプリケーションで検証済みのデータをタイムスタンプ形式で取得したいと考えています。

$inputFilter = new My_InputFilter();
if (!$inputFilter->isValid($criteria)) {
    throw new InvalidArgumentException(
        $this->simplifyInputFilterErrorMessages($inputFilter->getMessages())
    );
} else {
    $validatedCriteria = $inputFilter->getValues(); // Array with my timestamp date
}

'dateTimeTotimeStamp' (サンプル名) strtotime() フィルターを実装して、検証およびフィルター処理された日付を UNIX タイムスタンプ形式で取得する場所は?

4

1 に答える 1

3

別のフィルターを作成したくない場合は、Zend_Filter_Callbackを使用します。

例:

$this->addElement($this
    ->createElement('text', 'dateFrom')
    ->addFilter(new Zend_Filter_Callback(function($value){
        return strtotime($value);
    })));

フィルタリングは、検証中と getValue() を介して要素の値を取得するときの両方で行われます。

于 2013-06-12T23:57:16.717 に答える