1

フォームの送信中にデータがデータベースに保存される前にstrip_tags呼び出されるフィールドで実行したい。descriptionカスタムルールを作成して、そこで実行することを考えました:

    'description' => array(

            'stripTags' =>array(
                    'rule' => array('StripTags'),
                    'message' => ''
            ),
    ),


public function StripTags($user = array()) {

        return !empty($user['description'])?strip_tags($user['description']):"";
    }

ただし、cakephp は更新された値の代わりに true/false が返されることを想定しているため、これは機能しません。どうすればいいですか?

4

1 に答える 1

1

コールバックを使用しModel::beforeSave()ます。これはすべて、保存前の自動データ変更ロジックが実行されるはずです。保存前に呼び出されますが、検証後に呼び出されます。

テストされていない例:

public function beforeSave($options = array())
{
    if(!parent::beforeSave($options))
    {
        return false;
    }

    if(!empty($this->data[$this->alias]['description']))
    {
        $this->data[$this->alias]['description'] = strip_tags($this->data[$this->alias]['description']);
    }

    return true;
}
于 2013-09-05T13:03:19.060 に答える