2013-05-17 26 views
0

其中var是我的代碼:CakePHP的分配從功能/法

class ManImportsController extends AppController { 
    public $uppath; 
    var $name  = 'ManImports'; 
    var $uses  = array ('RFupload','ManImport'); 
    var $helpers = array ('Html', 'Session','Time', 'Form', 'Js', 'Javascript','DatePicker','Ajax','IrDependentArray','databaseFields','FileUpload.FileUpload', 'showFields'); 
    var $components = array ('FileUpload.FileUpload','Session','RequestHandler'); 
    var $actsAs  = array('FileUpload.FileUpload' => array(
         'uploadDir' => $this->uppath,   // Primary Upload Path 
         'forceWebroot' => false,    // false, files upload to uploadDir 
         'fields' => array ('name' => 'name', 'size' => 'size', 
         'date' => 'date', 'created' => 'created', 
         'type' => 'type'), 
         'allowedTypes' => array ('csv' => array('application/csv'), 
         'xls' =>array('application/vnd.ms-excel'), 
         'xlsx' =>array('application/vnd.ms-excel')), 
         'required' => false,     // true = errors when file isn't uploaded. 
         'maxFileSize' => false,     // false to turns off maxFileSize 
         'unique' => true,      // true will overwrite files with same name. 
         'massSave' => true, 
         'fileNameFunction' => false));   //execute the Sha1 function on a filename before saving it (default false) 

    public function beforeFilter() { 
     $this->uppath = $this->get_path(); 
    } // end function beforeFilter 

    function get_path() { 
     $mach = gethostname(); 
     if ($mach=='my_machine_ID') { 
      $path = "C:/home/files/uploads/"; 
     } else { 
      $path = '/home/files/uploads/'; 
     } // end if $mach 
     return $path; 
    } // end function get_path 
} // end class ManImportsController 

問題是讓「uploadDir」通過適當調用函數/法「get_path」正確分配。我已經嘗試了4種不同的組合,從cakePHP約定和PHP OOP,但到目前爲止還沒有工作。

你看到我在這裏錯過了什麼,你能告訴我正確的方式來稱呼它!

我必須在Linux上部署,但需要與Win7開發機器一起工作。

+0

你有什麼錯誤嗎?我不確定它是否與您的問題有關,但行爲是在模型中定義的,而不是在控制器中定義的。 – dhofstet

回答

0

首先,$ actsAs用於指定模型行爲。您的控制器中絕不應該有$ acts。

閱讀the doco小心 - 你要麼:
一)執行行爲,通過$ actsAs,在你的模型(在這種情況下你不需要的組件在你的控制器在所有)或
B)如果你真的不需要一個模型,而想要實現組件,那麼你將組件包含在你的控制器中,而你根本不需要$ actsAs。 (請注意,這是不建議的方式)

但無論如何,你不應該在你的控制器中有$ actsAs。編輯:順便說一句,我顯然不知道你的具體要求,或者你使用的是什麼版本的CakePHP,但是this upload plugin比你使用的版本更近更新和主動維護。

+0

謝謝!公司讓我們堅持1.3,並且不允許更新。不要以爲我可以做我想要的其他東西,這是V1.3中下拉選擇字段中的影子文本。希望爲更乾淨的屏幕。 – OldManRiver

+0

將$ actAS移入模型,但真的一直在與上傳者苦苦掙扎。如果我不能得到它的工作,可能會回來更多的洞察力。 – OldManRiver

+0

我目前沒有任何錯誤,甚至無法獲得「回聲幫助」;「出於此,所以不知道它是否甚至處理。屏幕顯示正常,所有需要的下拉菜單都會傳播,但點擊「上傳」按鈕時沒有任何內容。如果有幫助,可以把所有這些放在PasteBin上! – OldManRiver