Reading Variables CakePhp (assistance Needed)

Hi All,

I have a component which contains a variable and I need to read it from my controller.

Here is the code:

<?php
class FileUploadComponent extends Object {
      var $components = array('RequestHandler');
      
      function upload($data) {
            
            
            $folder = '203jfjg546650f0gf405764455887';
            
            mkdir md5($folder);
            
            
            
            $destination = 'img/uploads/'.md5($folder).'/'.$data['name'];
            if(move_uploaded_file($data['tmp_name'], $destination)) {
                  
                  return true;
            }  
            return false;
      }
}
?>

Can anyone help please?

Thanks
error77Asked:
Who is Participating?
 
NetExpert-WarszawaCommented:
getDestination() and getFolder() will return the variables you want.
/***********************************/
* component
/***********************************/
<?php
class FileUploadComponent extends Object {
      var $components = array('RequestHandler');
      protected $folder;
      protected $destination;
      
      function upload($data) {            
            
            $this->folder = '1223322';
            $tempdest  = 'img/uploads/';
            $random = rand(1111111111, 9999999999);
            
            $fullpath = $tempdest.$random.md5($this->folder);
            mkdir($fullpath);                        
            
            $this->Cookie->write('rfname',$fullpath);
            
            $this->destination = $fullpath.'/'.$data['name'];
            if(move_uploaded_file($data['tmp_name'], $this->destination)) {
                  
                  return true;
            }  
            return false;
      }

  public function getDestination() {
    return $this->destination;
  }

  public function getFolder() {
    return $this->folder;
  }
}
?>

Open in new window

0
 
NetExpert-WarszawaCommented:
Which variable? $destination?

Make it a class property. See the code
class FileUploadComponent extends Object {
  //...

  protected $destination;

  public function upload($data) {
    //...
    $this->destination = 'img/uploads/'.md5($folder).'/'.$data['name'];
    //...
  }

  public function getDestination() {
    return $this->destination;
  }
}

// to access the variable:

$component = new FileUploadComponent();
$component->upload(...);
$variable = $component->getDestination();

Open in new window

0
 
error77Author Commented:
Hi NetExpert... Couldn't get it to work but it's propably me ... I might have done something wrong.

Here is the actual component code.

Could you help me sort the code out so the variables can be accessed please?

Here is the code in full:

/***********************************/
* component
/***********************************/
<?php
class FileUploadComponent extends Object {
      var $components = array('RequestHandler');
      

      function upload($data) {
            
            
            $folder = '1223322';
            $tempdest  = 'img/uploads/';
            $random = rand(1111111111, 9999999999);
            
            mkdir($tempdest.''.$random.''.md5($folder));
            
            $fullpath = $tempdest.''.$random.''.md5($folder);
            
            
            $this->Cookie->write('rfname',$fullpath);
            
            $destination = 'img/uploads/'.$random.''.md5($folder).'/'.$data['name'];
            if(move_uploaded_file($data['tmp_name'], $destination)) {
                  
                  return true;
            }  
            return false;
      }
}
?>

Hope you can help.

Thanks

0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
error77Author Commented:
Anyone please?
0
 
NetExpert-WarszawaCommented:
Tell me which variables you want to access please.

In general, declare each variable, you want to access, in the classes scope instead of in functions scope. If you declare them with public modifier (or without any), you will be able to access them in a $component->variable way.
0
 
error77Author Commented:
Folder and destination please.
0
 
error77Author Commented:
Can you give me a usage example so I can try it please?
0
 
error77Author Commented:
I've tried using this on the controller:

$component = new FileUploadComponent();
$test = $component->getFolder();
                  echo $test;

It shows no errors but no results either.

I'm I doing it wrong?
0
 
NetExpert-WarszawaCommented:
Notice that variables receive their values in upload method.
$component = new FileUploadComponent();
$component->upload(array('name'=>'blablabla'));
$test = $component->getFolder();
echo $test;

Open in new window

0
 
error77Author Commented:
It's perfect ... just 1 thing ... I'm getting an error .. seems like somthings broken in the component?

Notice (8): Undefined index:  tmp_name [APP/controllers/components/file_upload.php, line 21]

Any ideas pls?
0
 
NetExpert-WarszawaCommented:
Line 21 is:
$this->destination = $fullpath.'/'.$data['name'];
and 22:
if(move_uploaded_file($data['tmp_name'], $this->destination)) {

As you can see $data is an array and needs to have at least two indexes 'name' and 'tmp_name'.
$component = new FileUploadComponent();
$component->upload(array('name'=>'blablabla', 'tmp_name'=>'tmp_blabla'));
$test = $component->getFolder();
echo $test;

Open in new window

0
 
error77Author Commented:
Perfect! Thank you very much for your help!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.