2016-06-22 3 views
0

Ich verwende CakePHP MVC. Ich habe zwei ctp-Vorlagen in View/Elements erstellt. Innerhalb einer ctp-Datei habe ich eine Button-Klick-Funktion hinzugefügt. Auf der anderen ctp-Datei habe ich die Upload-Funktion der Datei per Knopfdruck zur Datenbank hinzugefügt. So, jetzt brauche ich Hilfe, wie ich die Button-Klick-Funktion zum Hochladen von Dateien aus der anderen ctp-Datei übergebe.CakePHP-Eine Ansicht zu einer anderen Ansicht Schaltfläche klicken Funktion

Hope Sie können helfen.

+0

Ihren Rahmen wersion angeben Fragen zu platzieren –

Antwort

0

Sie sollten vermeiden, Logik in einer Vorlage zu behalten. unten das Beispiel werfen aussehen:

class Photo extends AppModel { 

    public $validate = array(
     'post_id' => array(
      'numeric' => array(
       'rule' => array('numeric') 
      ), 
     ), 
     'img_alt' => array(
      'notEmpty' => array(
       'rule' => array('notEmpty') 
      ), 
     ), 
     'rating' => array(
      'numeric' => array(
       'rule' => array('numeric') 
      ), 
     ), 
     'other' => array(
      'boolean' => array(
       'rule' => array('boolean') 
      ), 
     ), 
     'img_url' => array(
      'uploadError' => array(
       'rule' => 'uploadError', 
       'message' => 'Something went wrong with the file upload', 
       'required' => FALSE, 
       'on' => 'create' 
      ), 
      // custom callback to deal with the file upload 
      'processUpload' => array(
       'rule' => 'processUpload', 
       'message' => 'Something went wrong processing your file', 
       'required' => FALSE, 
       'last' => TRUE, 
       'on' => 'create' 
      ), 
     ), 
    ); 

    public function processUpload($check=array()) { 
     if (!empty($check['img_url']['tmp_name'])) { 
      if (!is_uploaded_file($check['img_url']['tmp_name'])) { 
       return FALSE; 
      } 

      // build full filename 
      $filename = WWW_ROOT . $this->uploadDir . DS . $this->data['Photo']['post_id'] . DS . Inflector::slug(pathinfo($check['img_url']['name'], PATHINFO_FILENAME)).'.'.pathinfo($check['img_url']['name'], PATHINFO_EXTENSION); 

      // try moving file 
      if (!move_uploaded_file($check['img_url']['tmp_name'], $filename)) { 
       return FALSE; 

      // file successfully uploaded 
      } else { 
       $filename = WWW_ROOT . Inflector::slug(pathinfo($check['img_url']['name'], PATHINFO_FILENAME)).'.'.pathinfo($check['img_url']['name'], PATHINFO_EXTENSION); 
       // save the file path relative from WWW_ROOT e.g. uploads/example_filename.jpg 
       $this->data[$this->alias]['filepath'] = str_replace(DS, "/", str_replace(WWW_ROOT, "", $filename)); 
      } 
     } 
     return TRUE; 
    } 

} 
+0

Ich habe nur die Upload Logik im Controller hinzugefügt ... ich den Controller für die Upload-Prozess durch Ajax-Funktion nenne. Ich muss nur wissen, dass, wenn ich den Upload-Button auf Klick-Funktion von einem Ctp zu einem anderen ctp – Tilo

+0

aufrufen können Sie einige andere Ctp-Datei html als Antwort rendern möchten? Ich komme nicht wirklich auf die Idee ... –

+0

Ja. Du hast es verstanden, was ich meinte. Ich möchte den Upload-Prozess von einer anderen ctp-Datei – Tilo