2015-04-06 3 views
0

В настоящее время я разрабатываю медиа-поведение, чтобы прикрепить носители к моделям. Я хочу обработать файл (загрузить) в модели Media; Таким образом, каждый раз, когда я загружаю файл, он напрямую связан с файлом.Передача дополнительных данных объекту

В cakephp2.0 я непосредственно передал в массиве данных дополнительный полевой файл, откуда я мог извлечь файл и выполнить свою обработку. я пытался здесь сделать в моем поведении:

$entity = $this->_table->Medias->newEntity(array(
    'path' => WWW_ROOT . $config['path'], 
    'file' => $data[$field], 
    'field' => $field 
)); 

Где ключ file не связан с какими-либо полями в таблице. Но это не проходит, и я не могу вернуть его обратно в свою обратную связь. beforeSave() Обратный вызов жизненного цикла в моей модели Medias.

Как я могу передать его моей модели надлежащим образом?

ответ

1

По умолчанию Объекты защищены от атак массового назначения. Это означает, что при создании объектов из массива вам необходимо явно указать сущности или newEntity(), какие поля доступны.

Пожалуйста, прочитайте документацию на массовое назначение:

http://book.cakephp.org/3.0/en/orm/entities.html#mass-assignment

Вы также можете сказать newEntity и patchEntity методы, что список доступных полей должно быть. Пожалуйста, прочитайте документацию о том, как использовать fieldList и accessibleFields варианты этих методов:

http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-request-data-into-entities

Наконец, еще одна причина, некоторые данные могут не достичь объект является проверка. Убедитесь, что ваши поля проходят проверку, которую вы имеете для них, как если бы они не выполняли какие-либо правила, они не будут скопированы в объект.

Смежные вопросы