cakephp 3.6: добавить пользователя с загрузкой изображений в таблицу изображений - PullRequest
0 голосов
/ 09 января 2019

Здравствуйте, у меня есть вопрос

Когда я регистрирую пользователя, я добавляю в учетную запись пользователя все его данные, в том числе имя изображения пользователя, но это имя на самом деле не сохраняется в таблице пользователей, а в другой таблице с именем images и в таблице users. Сохраняю ссылку на изображение.

Чтобы понять, я вставил следующее изображение:

enter image description here

В форме я положил:

<?= $this->Form->create($user, ['novalidate', 'id' => 'addform', 'class' => 'form addform']); ?>
    <?= $this->Form->control('persona_id', ['type' => 'select', 'options' => $opciones, 'class' => 'persona-add']); ?>
    <?= $this->Form->control('nombre', ['placeholder' => 'Nombre', 'class' => 'nombre-add', 'size' => '20', 'maxlength' => '30']); ?>
    <?= $this->Form->control('apellido', ['placeholder' => 'apellido', 'class' => 'apellido-add', 'id' => 'apellido-add', 'size' => '20', 'maxlength' => '30']); ?>
    <?= $this->Form->control('id_image', ['type' => 'file', 'class' => 'imagen-add']); ?>    
    <?= $this->Form->control('email', ['placeholder' => 'E-mail', 'class' => 'email-add', 'size' => '20', 'maxlength' => '30']); ?>
    <?= $this->Form->control('password', ['type' => 'password', 'class' => 'password-add', 'size' => '20', 'maxlength' => '30']); ?>
    <?= $this->Form->hidden('role', ['value' => 'user', 'class' => 'role-add']); ?>
    <?= $this->Form->hidden('active', ['value' => '1', 'class' => 'active-add']); ?>
    <?= $this->Form->hidden('creado', ['value' => $time, 'class' => 'creado-add']); ?>
    <?= $this->Form->hidden('modificado', ['value' => $time, 'class' => 'modificado-add']); ?>
    <div class="centrar-submit">
      <?= $this->Form->button('Crear usuario', ['id' => 'submit', 'class' => 'submit-add']); ?>

В модели таблицы пользователей у меня следующее соотношение:

$this->belongsTo('Images', [
            'foreignKey' => 'id_imagen'
        ]);

Пользователи контроллера:

public function add() {
      if($this->request->is('post')) {
        $user = $this->Users->patchEntity($user, $this->request->getData());
        if($this->Users->save($user)) {
          if(!empty($this->request->data['Image']['image_path']))
            $imagen = $this->request->data['Image']['image_path'];
            $ruta = "/fotos/peque/";
            $nombreImagen = $imagen.'-cuenta';
            $ext = substr(strtolower(strrchr($imagen['name'], '.')), 1);
            $arr_ext = array('jpg', 'jpeg', 'gif', 'png');
            if(in_array($ext, $arr_ext)) {
               move_uploaded_file($imagen['tmp_name'], $ruta . 'files' . DS . $imagen[$nombreImagen]);
               $this->request->data['Image']['image_path'] = $imagen;
            }
          }
          $this->Flash->success(__('El usuario ha sido creado correctamente.'));
          return $this->redirect(['controller' => 'Users', 'action' => 'login']);
        }
        else {
          $this->Flash->error(__('El usuario no pudo ser creado. Por favor, intentelo de nuevo.'));
        }
      }
      $this->set('user', $user);  }

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

Я понимаю, чего хочу?

...