CakePHP имеет много проверок - минимум один - PullRequest
0 голосов
/ 31 марта 2012

У меня есть такие отношения, как Project hasMany Photos и простейшее правило проверки (требуется прикрепить) для Photo.image.

Но когда я добавляю Project с одним добавленным файлом, это нормально, но когда я создаю много файлов типа ввода, и часть с вложенными файлами, а часть без, тогда мое правило не работает хорошо.

... потому что я хочу требовать как минимум один файл, как решение для этого?

В проекте есть много фотографий, требуется минимум 1 ...

Ответы [ 2 ]

2 голосов
/ 29 сентября 2012

На самом деле, это должна быть проверка модели, поскольку вы пытаетесь создать взаимосвязь «Проект имеет один к М Фотографии» между ними. Таким образом, эта проверка должна выполняться для функции beforeValidate в модели Project:

Модель проекта

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

Остальное будет корректно обработано правилами валидации CakePHP.

0 голосов
/ 31 марта 2012

это следует рассматривать как логику уровня приложения, а не проверку модели.

заставляет пользователя загружать в аренду одну фотографию из контроллера.

предполагает наличие нескольких полей для загрузки

Просмотр

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()
        }
    }
...