0

我正在尝试创建一个具有一组功能的库。在我看来,我希望我的表单能够访问一个函数并执行它。下面是我的 php 文件,我将它放在 App/Lib 文件夹中

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>

但我得到一个未找到的错误。

这甚至可以做到吗?

4

1 回答 1

0

你可以告诉 cake 你想从哪个文件夹路径调用你的视图。

把它放在你的引导 App::build(array('View' => array( $my_lib_folder_path.DS )));

这是我构建的一个片段,让 cake 搜索我的视图文件夹中的所有文件夹。因为我喜欢将我的代码安排在文件夹中。即查看/CompanyManagement/AddCompanies/index.ctp 查看/CompanyManagement/EditCompanies/index.ctp 查看/CompanyManagement/DeleteCompanies/disable.ctp 查看/CompanyManagement/DeleteCompanies/delete.ctp

我的代码告诉 cake 搜索我的视图文件夹下的所有文件,并查看子文件夹以找到我想要的特定视图。但从搜索中排除布局、元素和助手文件夹。

应用程序/配置/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 )));
      }
    }
}
于 2013-11-14T15:51:34.387 回答