Szczegóły pluginu
# composer require 'davidyell/proffer:^1.0'
Szczegóły pluginu
https://github.com/davidyell/CakePHP3-Proffer/blob/master/docs/installation.md
Tabela np. products:
# alter table products add photo varchar(255); # alter table products add photo_dir varchar(255);
Application.php w metodzie bootstrap
$this->addPlugin('Proffer');
W tabeli produktów ProductsTable.php
$this->addBehavior('Proffer.Proffer', [ 'photo' => [ // The name of your upload field 'root' => WWW_ROOT . 'files', // Katalog bazowy na pliki 'dir' => 'photo_dir', // Kolumna w bazie na zapisanie nazwy katalogu 'thumbnailSizes' => [ // Deklaracja ikonek 'square' => [ // Konfiguracja ikonek 'w' => 200, // Width 'h' => 200, // Height 'fit' => true ], 'portrait' => [ // Druga wersja ikonek 'w' => 100, 'h' => 300, 'orientate' => true ], ], 'thumbnailMethod' => 'gd' // Biblioteka php ] ]);
Plik jest wgrywany w metodach add/edit jeśli pole ’photo’ zostało ustawione. Plik jest kasowany jeśli pole ’photo’ ma wartość null.
Template upload.ctp
<?= $this->Form->create($product, ['type' => 'file']) ?> <div class="row"> <div class="col-6"> <?= $this->Form->control('photo', [ 'type' => 'file', 'class' => 'form-control-file', 'label' => 'Wybierz plik z dysku' ]) ?> </div> <div class="col-2"><br> <?= $this->Form->button('Wgraj plik', [ 'class' => 'btn btn-success', 'label' => 'Wybierz plik z dysku' ]) ?> </div> </div> <?= $this->Form->end() ?>
Walidacja – rozmiar obrazka – provider PROFFER – CoursesTable.php
public function validationDefault(Validator $validator) { $validator->setProvider('proffer', 'Proffer\Model\Validation\ProfferRules'); $validator->add('photo', 'proffer', [ 'rule' => ['dimensions', [ 'min' => ['w' => 100, 'h' => 100], 'max' => ['w' => 800, 'h' => 800] ]], 'message' => 'Niewłaściwy rozmiar obrazka. Dozwolony maxymalny rozmiar: 800px x 800px.', 'provider' => 'proffer' ]); //$validator->allowEmpty('photo'); $validator->add('photo', 'upload', [ 'rule' => ['uploadedFile', ['optional' => true]] ]); $validator->add('photo', 'file', [ 'rule' => ['mimeType', ['image/jpeg', 'image/png', 'image/gif']], 'message' => 'Niepoprawny typ pliku. Dozwolone typy: jpeg, png, gif' ]); $validator->add('photo', 'file', [ 'rule' => ['fileSize', '<=', 2097152], 'message' => 'Zbyt duży plik. Dozwolony rozmiar <= 2MB' ]);