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.

Reply via email to