如何在控制器中创建函数并在cakephp 3.xxx的模板/视图中使用它

如何在控制器中创建函数并在cakephp 3.xxx的模板/视图中使用它,php,cakephp,Php,Cakephp,我需要在我的视图/模板页面中使用该功能 我的代码: public function getAppNumber($id = null){ $aPPLICATIONINFO = $this->AppEstLto->APPLICATIONINFO->find('all', [ 'fields'=>['application_number'], 'conditions'=>['application_id'=>$id], 'l

我需要在我的视图/模板页面中使用该功能

我的代码:

public function getAppNumber($id = null){

     $aPPLICATIONINFO = $this->AppEstLto->APPLICATIONINFO->find('all', [
     'fields'=>['application_number'],
     'conditions'=>['application_id'=>$id],
     'limit' => 200
     ]);
     foreach($aPPLICATIONINFO as $aPPLICATIONINFO){
        $aPPLICATIONINFOx = $aPPLICATIONINFO;
    } 
     return $aPPLICATIONINFOx;
}
您可以使用set()在视图中使用cookbook中给出的函数变量:

现在,您可以在视图中使用它:

获取应用程序号.ctp:

<?php
 foreach($applicationArray as $application)
 {
   echo $application['application_number'];
 }
?>

您应该在配置文件夹中的routes.php文件中执行类似操作:

 Router::connect('/get-app-number', array('controller' => 'yourController', 'action' => 'get_app_number'));
这样,您就可以连接将用于查看的url。 您的操作对应并将数据发送到视图。 动作是控制器内部的函数,您在其中开发用于设置数据和变量。 将生成的段塞示例:


foreach($aPPLICATIONINFO as$aPPLICATIONINFO)
非常误导您的循环体在每次迭代中都会覆盖
$aPPLICATIONINFO
的内容。然后返回它。它产生的结果与只执行
返回端($aPPLICATIONINFO)
相同。该方法似乎是模型的一部分(它查询和获取数据)。在MVC模式中,控制器负责构建模型,而不是视图。我宁愿在控制器中获取数据并将其传递给视图。代码工作得很好,我只需要将其直接用于模板/view。不,代码工作得不完美。要在模板中使用结果,请尝试$this->set('info',$applicationinfo);然后在模板中尝试调试($info);是否需要从view.ctp文件调用getAppNumber()?是否将函数连接到视图?您应该在配置文件夹中的
routes.php
文件中执行类似操作:
Router::connect('/get app number',array('controller'=>'yourController','action'=>'get_app_number')
 Router::connect('/get-app-number', array('controller' => 'yourController', 'action' => 'get_app_number'));