Proffer Upload files – cakePHP 3

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'
    ]);

Dodaj komentarz