0

これが私のモデルの仕組みです。expires_at 列を持つ Post モデルがあります。ユーザーは、投稿を持続させたい日数を整数で指定します。

コントローラーで検証を行っていたとき、これは非常に簡単でした。「日」フィールドを検証し、それを将来の有効期限に変換するだけです。しかし、現在、Ardent を使用してモデルの検証を行っていますが、これを達成する方法がわかりません。mutator を使用する必要があると思いますが、expires_at を整数として設定するのは直感に反するようです。また、アーデントが突然変異の前または後に検証するかどうかもわかりません。

4

1 に答える 1

1

確認フィールドなどのデータから冗長を削除するコードを使用してそれを行う方法を見つけました。

public $autoPurgeRedundantAttributes = true;

function __construct() {
    parent::__construct();

    $this->purgeFilters[] = function($key) {
        $purge = array('tempData', 'myAttribute');
        return ! in_array($key, $purge);
    };
}

有効にする必要があり$autoPurgeRedundantAttributesます。そうしないと、フィルターが呼び出されません。$purgeFilters次に、提供された属性を削除する必要がある場合に false を返すクロージャーを配列に追加します。(この場合は「日」)

次に、検証するフィールドを手動で設定する必要があります

$this->attributes['days'] = $value;

編集:これは現在公式ドキュメントにあります。上記のコードを彼らのものに置き換えました。

于 2013-08-01T03:47:21.357 に答える