В Cakephp 3.6 Как получить размер и тип изображения для отправки его по форме? - PullRequest
0 голосов
/ 07 марта 2019

Как получить размер и тип изображения для отправки по форме?

Хорошо, я хочу сохранить в таблице изображений размер и тип изображения, загружаемого через форму.С помощью Ajax я могу восстановить эти данные, но передать их в PHP я могу только при отправке формы, в том числе напрямую с PHP:

if ($this->request->is('post')) {
          $isData = $this->request->getdata();
          $imagene->imagen = $isData['image_path'];
          $imagene->tipo = $isData['type']
          $imagene->tamano = $isData['size'];
          ...

Но я хочу сделать это перед отправкой формы, котораяэто когда вставка выполняется в базе данных.

Форма:

<?= $this->Form->create($imagene, ['novalidate', 'id' => 'addimageform', 'class' => 'form addimageform']); ?>    
<?= $this->Form->control('imagen', ['type' => 'file', 'class' => 'imagen-addimage']); ?>
<?= $this->Form->hidden('tipo', ['value' => $tipo, 'class' => 'tipo-addimage']); ?>
<?= $this->Form->hidden('$tipo', ['value' => $size, 'class' => 'tamano-addimage']); ?>
<?= $this->Form->button('Subir imagen', ['id' => 'submit', 'class' => 'submit-addimage']); ?>
<?= $this->Form->button('Omitir', ['id' => 'omitir', 'class' => 'omitir-addimage', 'redirect' => ['controller' => 'administracion', 'action' => 'index']]); ?>
<?= $this->Form->end(); ?>

Теперь я вижу, что если я выполняю отладку $ isData, поле "imagen" не появляется:

    'tabla' => 'users',
    'id_tabla' => '22',
    'tipo' => '',
    'tamano' => ''

ОБНОВЛЕНИЕ

Я изменил вещи в форме и контроллере:

Форма:

<?= $this->Form->create($imagene, ['enctype' => 'multipart/form-data', 'novalidate', 'id' => 'addimageform', 'class' => 'form addimageform']); ?>
    <?= $this->Form->control('imagen', ['type' => 'file', 'class' => 'imagen-addimage']); ?>
    <div class="centrar-submit">
      <?= $this->Form->button('Subir imagen', ['id' => 'submit', 'class' => 'submit-addimage']); ?>
      <?= $this->Form->button('Omitir', ['id' => 'omitir', 'class' => 'omitir-addimage', 'redirect' => ['controller' => 'administracion', 'action' => 'index']]); ?>
    </div>
    <?= $this->Form->end(); ?>

Контроллер:

public function add($table, $idTable) {
      $imagene = $this->Imagenes->newEntity();
      if ($this->request->is('post')) {
        $isData = $this->request->getdata();
        debug($this->request->getData('imagen')); // <---- Is null
        debug($isData); // <---- Is empty
        ...

Почему?Я не знаю.

1 Ответ

0 голосов
/ 11 марта 2019

Вы должны упомянуть, какой тип формы вы использовали.Это тип файла, который вы должны использовать

echo $this->Form->create($article, ['type' => 'file']);

Надеюсь, это поможет вам.

...