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.