CakePHP ファイルアップロード機能(josegonzalez/Upload)

インストール

Composerからライブラリインストール
# composer require josegonzalez/cakephp-upload

設定

ライブラリロード設定

# bin/cake plugin load josegonzalez/Upload

↓ にロード設定が追加される
※/config/bootstrap.php
Plugin::load('Josegonzalez/Upload.Upload');

モデル

class ProductsTable extends Table
{
 public function initialize(array $config)
 {
  parent::initialize($config);

  $this->setTable('products');
  $this->setDisplayField('id');
  $this->setPrimaryKey('id');

  $this->addBehavior('Timestamp');

  // Upload Plugin
  $this->addBehavior('Josegonzalez/Upload.Upload', [
   最小機能(アップロードのみ)
   'image' => [],

   ファイル名自動作成
   'image' => [
    'nameCallback' => function ($data, $settings) {
     return uniqid().'-'.strtolower($data['name']);
    }
   ],

   レコード削除時にファイルを削除
   'image' => [
     'keepFilesOnDelete' => false
   ],
  ]);
 }
}

ビュー

<?= $this->Form->create($product, ['type' => 'file']) ?>
 <?= $this->Form->control('image', ["type"=>"file"]); ?>
<?= $this->Form->end() ?>

前の記事

PHP 重要用語