Estoy intentado entrar en esto de los Framworks y me he decidido por Cakephp, he probado a hacer una pequeña aplicación, el modelo es este:
Código:
En el controlador después de mirar info por google encontré esto, y de momento sube los archivos, pero al momento de guardar en la tabla el "foto_uno" me devuelve error al decirme que el campo está vacio, pero no logro comprender como decirle o indicarle que el nombre que ha de guardar en ese campo es lo que normalemte antes hacia con $_FILE['foto_uno']['name']... pero ahora hace aquello de guardar con ($this->Sector->save($this->request->data))class Sector extends AppModel { /** * Validation rules * * @var array */ public $validate = array( 'nombre' => array( 'notempty' => array( 'rule' => array('notempty'), //'message' => 'Your custom message here', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule //'on' => 'create', // Limit validation to 'create' or 'update' operations ), ), 'descripcion' => array( 'notempty' => array( 'rule' => array('notempty'), //'message' => 'Your custom message here', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule //'on' => 'create', // Limit validation to 'create' or 'update' operations ), ), 'foto_uno' => array( 'notempty' => array( 'rule' => array('notempty'), 'message' => 'Elige una imagen', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule //'on' => 'create', // Limit validation to 'create' or 'update' operations ), ), 'foto_dos' => array( 'notempty' => array( //'rule' => array('notempty'), //'message' => 'Elige una imagen', //'allowEmpty' => false, //'required' => false, //'last' => false, // Stop validation after this rule //'on' => 'create', // Limit validation to 'create' or 'update' operations ), ), );
De momento este es el código del Controller
Código:
Y el view public function add() { if ($this->request->is('post')) { //Subir imagenes if ($this->data['Sector']['foto_uno']) { $file = new File($this->data['Sector']['foto_uno']['tmp_name']); $path_parts = pathinfo($this->data['Sector']['foto_uno']['name']); $ext = $path_parts['extension']; if ($ext != 'jpg' && $ext != 'jpeg' && $ext != 'gif' && $ext != 'png') { $this->Session->setFlash('Solo puedes subir imagenes.'); $this->render(); } else { $date = $this->data['Sector']['foto_uno']['name']; $filename =$date.'-post-image.'.$ext; $data = $file->read(); $file->close(); $file = new File(WWW_ROOT.'/img/'.$filename,true); $file->write($data); $file->close(); } } //Fin subir imagenes $this->data['Sector']['foto_uno'] = $this->data['Sector']['foto_uno']['name']; $this->Sector->create(); if ($this->Sector->save($this->request->data)) { $this->Session->setFlash(__('The sector has been saved')); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('The sector could not be saved. Please, try again.')); } } }
Código:
Me gustaría saber que debo hacer para que guarde el valor de los campos foto_uno y foto_dos en la tabla, y que además suba los archivos a la carpeta adecuada (cosa que de momento ya hace)<div class="sectors form"> <?php echo $this->Form->create('Sector', array('type' => 'file')); ?> <fieldset> <legend><?php echo __('Add Sector'); ?></legend> <?php echo $this->Form->input('nombre'); echo $this->Form->input('descripcion'); echo $this->Form->input('foto_uno', array('type' => 'file')); echo $this->Form->input('foto_dos', array('type' => 'file')); ?> </fieldset> <?php echo $this->Form->end(__('Submit')); ?> </div> <div class="actions"> <h3><?php echo __('Actions'); ?></h3> <ul> <li><?php echo $this->Html->link(__('List Sectors'), array('action' => 'index')); ?></li> <li><?php echo $this->Html->link(__('List Franquicias'), array('controller' => 'franquicias', 'action' => 'index')); ?> </li> <li><?php echo $this->Html->link(__('New Franquicia'), array('controller' => 'franquicias', 'action' => 'add')); ?> </li> </ul> </div>
Pos eso, gracias
PD: tengo MUY POCA idea sobre POO, así que cosas que parecen evidentes, a veces no lo son :(