2016-06-22 11 views
0

私はCakePHP MVCを使用しています。 View/Elements内に2つのctpテン​​プレートを作成しました.1つのctpファイルの中にボタンのクリック機能を追加しました。他のctpファイルでは、ボタンクリック時にファイルのアップロード機能をデータベースに追加しました。だから私は他のctpファイルからのファイルのアップロードのためにボタンのクリック機能を渡す方法を助けが必要です。CakePHP-1つのビューを他のビューボタンにクリックする機能

希望あなたのお手伝いができます。

+0

を私が唯一のコントローラにアップロードロジックを追加した –

答えて

0

テンプレート内にロジックを保存しないでください。 はルックが怒鳴る例を投げる:

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

質問を置くことであなたのフレームワークwersionを指定します...私は、Ajax機能により、アップロード処理のためのコントローラを呼び出しています。私はちょうど私があるctpから別のctpにクリック機能のアップロードボタンを呼び出すことができる場合は知っておく必要があります – Tilo

+0

応答としていくつかの他のctpファイルのhtmlをレンダリングしたいですか?私は本当にそのアイデアを得ていません... –

+0

はい、あなたはそれが私の意味を持っています。私は別のctpファイル – Tilo

関連する問題