0

Project hasMany Photosのような関係と、Photo.imageの最も単純な検証(添付が必要)ルールがあります。

しかし、1つのファイルを追加してプロジェクトを追加する場合は問題ありませんが、多くの入力タイプのファイルを作成し、一部が添付ファイルあり、一部が添付されていない場合、ルールは適切に機能しません。

...少なくとも1つのファイルが必要なので、これをどのように解決しますか?

プロジェクトには、最低1枚の写真が必要な多くの写真があります...

4

2 に答える 2

2

実際には、モデルの検証である必要があります。これは、2つの間に「プロジェクトに1対Mの写真がある」関係を作成しようとしているためです。したがって、この検証は、プロジェクトモデルのbeforeValidate関数で実行する必要があります。

プロジェクトモデル

function beforeValidate(){
    if( !isset($this->data['Photo']) || count($this->data['Photo']) == 0)
        return false;
    else
        return true;
}

残りはCakePHPの検証ルールによって正しく処理されます。

于 2012-09-29T19:08:53.163 に答える
0

モデルの検証ではなく、アプリケーションレベルのロジックと見なす必要があります。

ユーザーにコントローラーから少なくとも1枚の写真をアップロードするように強制します。

複数のアップロードフィールドがあることを前提としています

意見

echo $form->input("Photo.0.file", $options);
echo $form->input("Photo.1.file", $options);
echo $form->input("Photo.2.file", $options);

コントローラ

    //form submited
    if (!empty($this->data)) {

        $total_uploaded = 0;

        foreach ($this->data['Photo'] as $i => $record) {

            if (empty($record['file'])) { //some field leave blank
                unset($this->data['Photo'][$i]);
                //continue;
            }else{
                $total_uploaded ++;
            }
        }

        //check at lease 1 file
        if($total_uploaded > 0){
            //validate and saveAll()
        }
    }
于 2012-03-31T10:51:36.463 に答える