2015-07-29 4 views
1

Я использую этот плагин http://cakemanager.org/docs/utils/1.0/behaviors/uploadable/#configurations для загрузки изображения в cakephp 3. Здесь изображение хорошо сохраняет базу данных, но проблема заключается в том, что изображение не загружается в путь. Вот код в модели, которую я попыталсяcakephp 3 Загрузка изображения по Utils Behavior

$this->addBehavior('Utils.Uploadable', [ 
      'banner' => [ 
       'field' => 'id', 
       'path' => '{ROOT}{DS}{WEBROOT}{DS}uploads{DS}', 
       'fileName' => '{field}.{extension}' 
      ], 
]); 

Я создал папку в моей папке WebRoot не вызывает uploads.But нет какой-либо файл сохранения в папке закачек, но имя сохранения в таблице базы данных.

+0

Вы проверили свой журнал ошибок, чтобы узнать, записываются ли какие-либо ошибки, а также проверяется chmod созданного вами каталога. –

ответ

1

Я тоже долго боролся с этим. Наконец попытался решить это сам. В этом плагине есть ошибка. Посмотрите функцию aftersave в загружаемом поведении.

ОРИГИНАЛ КОД:

public function afterSave($event, $entity, $options) 
{ 
    $fields = $this->getFieldList(); 
    foreach ($fields as $field => $data) { 
     if ($this->_ifUploaded($entity, $field)) { 
      if ($this->_uploadFile($entity, $field)) { 
       if (!key_exists($field, $this->_savedFields)) { 
        $this->_savedFields[$field] = true; 
        $event->subject()->save($this->_setUploadColumns($entity, $field)); 
       } 
      } 
     } 
    } 

    $this->_savedFields = null; 
} 

После FIX:

public function afterSave($event, $entity, $options) 
{ 
    $fields = $this->getFieldList(); 
    foreach ($fields as $field => $data) { 
     //LINES ADDED - Start 
     if(isset($_FILES[$field])){ 
      $entity->{$field} = $_FILES[$field]; 
     } 
     //LINES ADDED - end 
     if ($this->_ifUploaded($entity, $field)) { 
      if ($this->_uploadFile($entity, $field)) { 
       if (!key_exists($field, $this->_savedFields)) { 
        $this->_savedFields[$field] = true; 
        $event->subject()->save($this->_setUploadColumns($entity, $field)); 
       } 
      } 
     } 
    } 

    $this->_savedFields = null; 
} 

Это должно исправить вашу проблему. :)

+0

не сработал для меня –

+0

@SyamsoulAzrien Вы пробовали отлаживать что-нибудь на этой линии? Что дает '$ _FILES' в строке, где я добавил исправление? Что там делает '$ entity'? –

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