2013-11-14 56 views
0

我正嘗試創建一個具有一組函數的庫。在我看來,我希望我的表單能夠訪問一個函數並執行它。下面是我的PHP文件,我放在app/lib文件夾來自庫的CakePHP調用函數

myClass.php:

class myClass{ 
     public function someFunction(){ 
      $parentPage =$this->referer(); 
      //do something 
      $this->redirect($parentPage); 
     }  
} 

然後,在我看來,我有一個表格(我沒有使用表單助手(也不我想),我想打我的圖書館類,並功能,並重定向到一個給定的頁面(在這個例子中,只是引用頁)。但問題是,蛋糕總是試圖找到控制器內的功能在控制器文件夾中如何告訴表單使用控制器文件夾外的類?

我的看法:

<form id="login-user" action="/Lib/myClass/someFunction" method="post"> 
    //form stuff here 
</form> 

但我得到一個未找到的錯誤。

這甚至能夠完成嗎?

+0

這看起來像一個典型控制器的方法。爲什麼你想爲這個功能創建一個庫類? – dhofstet

回答

0

你可以告訴你想從哪個文件夾路徑調用你的視圖。

把這個放在引導程序中 App :: build(array('View'=> array($ my_lib_folder_path.DS)));

這裏是我建立的一個片段,讓蛋糕搜索我的視圖文件夾中的所有文件夾。因爲我喜歡將我的代碼安排在文件夾中。即 查看/ CompanyManagement/AddCompanies/index.ctp 查看/ CompanyManagement/EditCompanies/index.ctp 查看/ CompanyManagement/DeleteCompanies/disable.ctp 查看/ CompanyManagement/DeleteCompanies/delete.ctp

和我的代碼告訴蛋糕搜索我的視圖文件夾下的所有文件,並查看子文件夾以查找我想要的特定視圖。但從搜索中排除佈局,元素和助手文件夾。

應用程序/配置/ bootstrap.php中

define('ELEMENTS', APP.'View'.DS.'Elements'); 
define('HELPERS',  APP.'View'.DS.'Helper'); 
define('LAYOUTS',  APP.'View'.DS.'Layouts'); 
define('VIEWS',  APP.'View'.DS) 


includeViews(); 

function includeViews() { 
    App::uses('Folder', 'Utility'); 
    $folder  = new Folder(VIEWS); 
    $folders_paths = current($folder->read($sort = true, $exceptions = false, $fullPath = true)); 

    foreach($folders_paths as $folder_path) { 
     $isAHelperPath = (new Folder($folder_path))->inPath(HELPERS); 
     $isALayoutPath = (new Folder($folder_path))->inPath(LAYOUTS); 
     $isAnElementPath = (new Folder($folder_path))->inPath(ELEMENTS); 
     if (! $isAHelperPath && ! $isALayoutPath && ! $isAnElementPath) { 
     App::build(array('View' => array($folder_path.DS))); 
     } 
    } 
}