You can get rid of the $unset_photo variable.... I didn't end up using it. --Charles
On Sat, Feb 28, 2015 at 6:48 PM, Charles Beasley <[email protected]> wrote: > I'm sorry.. I replied quickly via cell phone. A better response is as > follows. > > Try the following code: > > <?php > > > class Outlet extends CoasterCmsAppModel > > { > > public $validate = array( > > 'name' => array( > > 'rule' => 'notEmpty', // verplicht > > 'message' => 'Nameis required.', > > 'allowEmpty' => true > > ), > > 'intro' => array( > > 'rule' => 'notEmpty', // verplicht > > 'message' => 'Intro is required.' > > ), > > 'photo' => array( > > 'validFileSize' => array( // zelf gekozen naam van de regel > > 'rule' => array('filesize', '>', 0), // verplicht > > 'on' => 'create', > > 'message' => 'Photo is required.' > > ) > > ), > > 'photoTemp' => array( > > 'validExtension' => array( // zelf gekozen naam van de regel > > 'rule' => array('extension', array('jpg', 'jpeg', 'png', > 'gif')), > > 'on' => 'create', > > 'message' => 'Photo has to contain a valid extension (jpg, > jpeg, png or gif).' > > ), > > 'validExtension' => array( // zelf gekozen naam van de regel > > 'rule' => array('extension', array('jpg', 'jpeg', 'png', > 'gif')), > > 'allowEmpty' => true, > > 'on' => 'update', > > 'message' => 'Photo has to contain a valid extension (jpg, > jpeg, png or gif).' > > ) > > ) > > ); > > > > public function beforeValidate() > > { > > $unset_photo = false; > > if ( is_array( $this->data['Outlet']['photo'] ) ) { > > $filename = false; > > $tmp_filename = false; > > $unset_photo = true; > > $upload_path = WWW_ROOT .'img' . DS . 'outlets' . DS; > > if ( isset( $this->data['Outlet']['photo']['name'] ) ) { > > $filename = trim($this->data['Outlet']['photo']['name']); > > } > > if ( isset( $this->data['Outlet']['photo']['tmp_name'] ) ) { > > $tmp_filename = > trim($this->data['Outlet']['photo']['tmp_name']); > > } > > if ( ! empty( $tmp_filename ) && ! empty( $filename ) ) { > > // Move the uploaded file to the new directory > > if(!move_uploaded_file($tmp_filename, $upload_path > basename($filename))) { > > /* > > * Handle upload error and return FALSE; e.g. > > * $this->validationErrors['Outlet']['photo'] = > 'Failed to upload file ' . $filename; > > */ > > } else { > > $this->data['Outlet']['photo'] = $filename; // SUCCESS > > } > > } else if ( ! empty( $this->data['Outlet']['photo'] ) ) ) { > > /* > > * Handle Invalid input error and return FALSE; e.g. > > * > > * $this->validationErrors['Outlet']['photo'] = > 'Invalid input: photo tmp_name required'; > > * $this->validationErrors['Outlet']['photo'] = > 'Invalid input: photo name required'; > > */ > > } else { > > /* > > * Silently unset and ignore an empty array. > > */ > > unset($this->data['Outlet']['photo']); > > } > > } > > } > > > ?> > > > On Sat, Feb 28, 2015 at 6:24 PM, Charles Beasley <[email protected]> > wrote: > >> I think you should change your function to beforeValidate >> On Feb 28, 2015 5:54 PM, "Sam Clauw" <[email protected]> wrote: >> >>> Okay Charles , that makes sense so I changed my code: >>> >>> <?php >>> >>> >>> class Outlet extends CoasterCmsAppModel >>> { >>> public $validate = array( >>> 'name' => array( >>> 'rule' => 'notEmpty', // verplicht >>> 'message' => 'Nameis required.', >>> 'allowEmpty' => true >>> ), >>> 'intro' => array( >>> 'rule' => 'notEmpty', // verplicht >>> 'message' => 'Intro is required.' >>> ), >>> 'photo' => array( >>> 'validFileSize' => array( // zelf gekozen naam van de regel >>> 'rule' => array('filesize', '>', 0), // verplicht >>> 'on' => 'create', >>> 'message' => 'Photo is required.' >>> ) >>> ), >>> 'photoTemp' => array( >>> 'validExtension' => array( // zelf gekozen naam van de regel >>> 'rule' => array('extension', array('jpg', 'jpeg', 'png', >>> 'gif')), >>> 'on' => 'create', >>> 'message' => 'Photo has to contain a valid extension >>> (jpg, jpeg, png or gif).' >>> ), >>> 'validExtension' => array( // zelf gekozen naam van de regel >>> 'rule' => array('extension', array('jpg', 'jpeg', 'png', >>> 'gif')), >>> 'allowEmpty' => true, >>> 'on' => 'update', >>> 'message' => 'Photo has to contain a valid extension >>> (jpg, jpeg, png or gif).' >>> ) >>> ) >>> ); >>> >>> public function beforeValidate() >>> { >>> $this->data['Outlet']['photoTemp'] = $this->data['Outlet'][ >>> 'photo']; >>> $this->data['Outlet']['photo'] = $this->data['Outlet'][ >>> 'photoTemp']['name']; >>> } >>> >>> public function afterValidate() >>> { >>> $filename = $this->data['Outlet']['photo']; >>> >>> if (!empty($filename)) { >>> move_uploaded_file($this->data['Outlet']['photoTemp'][ >>> 'tmp_name'], WWW_ROOT . 'img' . DS . 'outlets' . DS . $filename); >>> } else { >>> unset($this->data['Outlet']['photo']); >>> } >>> >>> unset($this->data['Outlet']['photoTemp']); >>> } >>> } >>> >>> >>> However, I still get the error message that I should upload a file with >>> a correct extension. It's just like 'allowEmpty' => true" isn't working >>> at all. >>> I quess in my case it's checking the value in $this->data['Outlet'][ >>> 'photoTemp']['type'] so what could possibly be the problem? >>> >>> -- >>> Like Us on FaceBook https://www.facebook.com/CakePHP >>> Find us on Twitter http://twitter.com/CakePHP >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "CakePHP" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To post to this group, send email to [email protected]. >>> Visit this group at http://groups.google.com/group/cake-php. >>> For more options, visit https://groups.google.com/d/optout. >>> >> > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.
