Cakephp Ошибка при использовании плагина Miles J Uploader - PullRequest
1 голос
/ 01 марта 2012

В настоящее время я пытаюсь использовать плагин Miles J, расположенный здесь http://milesj.me/code/cakephp/uploader Хотя я добился большого прогресса в изучении CakePhp, в настоящее время у меня возникают проблемы с использованием плагина, и я был бы признателен за любую помощь.1004 * Я выполнил все необходимые шаги, чтобы использовать плагин.Он был загружен в папку Plugin, я загрузился с помощью CakePlugin :: loadAll ().

Пока все хорошо.

Далее я приступил к настройке таблицы, как указано разработчиком плагина.

Хорошо, теперь вернемся к моему собственному коду.У меня есть следующие настройки:

images_controller.php, image.php и их представления.

Теперь моя цель - использовать плагин внутри этих файлов как таковой:

App::import('Vendor', 'Uploader.Uploader');

Class ImagesController extends AppController {

     var $components = array('Auth');
     var $helpers = array('Design');
     var $uses = array('Image', 'Uploader.Upload');

     function manage(){
         //here I show a simple upload form that uses the action saveimage 
     }

     function saveimage(){

          $this->Uploader = new Uploader();
          if(!empty($this->data)){
               $this->Upload->save($this->data);
          }


     }



}

Теперь моя модель настроена следующим образом

Class Image extends AppModel {

       public $useTable = 'uploads';
       public $actsAs = array(
        'Uploader.FileValidation' => array(
            'file' => array(
                'extension' => array(
                    'value' => array('gif', 'jpg', 'jpeg'),
                    'error' => 'Only gif, jpg and jpeg images are allowed!'
                ),
                'minWidth' => 500,
                'minHeight' => 500,
                'required' => true
            ),
            'import' => array(
                'required' => false
            )
        ),
        'Uploader.Attachment' => array(
            'file' => array(
                'name' => 'uploaderFilename',
                'uploadDir' => '/files/uploads/',
                'dbColumn' => 'path',
                'maxNameLength' => 30,
                'overwrite' => true,
                'stopSave' => false,
                'transforms' => array(
                    // Save additional images in the databases after transforming
                    array(
                        'method' => 'resize',
                        'width' => 100,
                        'height' => 100,
                        'dbColumn' => 'path_alt'
                    )
                ),
                'metaColumns' => array(
                    'size' => 'filesize',   // The size value will be saved to the filesize column
                    'type' => 'type'        // And the same for the mimetype
                )
            ),
            'import' => array(
                'uploadDir' => '/files/uploads/',
                'name' => 'uploaderFilename',
                'dbColumn' => 'path',
                'overwrite' => true,
                'stopSave' => false,
                'transforms' => array(
                    array(
                        'method' => 'scale',
                        'percent' => .5,
                        'dbColumn' => 'path' // Overwrite the original image
                    )
                )
            )
        )
    );


}

}

В моей модели для целей тестирования я ничего не изменил, а просто скопировал и вставил тот же массив, как показано напапка Test / Model внутри плагина, предназначенная для демонстрации функциональности плагина.

Происходит следующая путаница, ошибки или непонимание:

Мой файл не проверяетсязагружено в папку webroot / files / uploads Мои данные вставляются в базу данных, но не в полном порядке, оставляя пустым, как показано:

id | caption | path | path_alt | created  |
4  |         |      |          |2012:02:..|

Выше я ожидаю, что путь будет сохранен, ноэто не так.

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

Буду признателен за любую быструю помощь, так как я пытался решить это самостоятельно без какого-либо успеха.

1 Ответ

6 голосов
/ 02 марта 2012

Несколько вещей:

1 - В вашем контроллере вам не нужно импортировать класс Uploader.Вам также не нужно использовать модель Uploader.Upload (это просто пример теста).Все, что вам нужно сделать в контроллере, это вызвать $ this-> Image-> save (), который загрузит файл и сохранит путь в виде строки в базе данных (если вы определили Attachment in Image).

2 - По вашему мнению, создайте файл ввода.Обратите внимание на имя ввода.

echo $this->Form->input('FILE_INPUT_NAME', array('type' => 'file'));

3 - в вашей модели изображения установите AttachmentBehavior и его параметры для этого конкретного поля ввода:

'Uploader.Attachment' => array(
    'FILE_INPUT_NAME' => array(
        'uploadDir' => '/files/uploads/',
        'dbColumn' => 'path'
    ),
    'ANOTHER_INPUT' => array()
);

Убедитесь, что столбецпуть "существует в вашей таблице изображений.И это все.

Для получения дополнительной информации о том, что делает каждый параметр, проверьте следующее: http://milesj.me/code/cakephp/uploader#uploading-files-through-the-model

...