Cakephp在组件中加载Appcontroller方法

时间:2017-07-12 13:56:01

标签: cakephp cakephp-2.3

我想在组件中加载Appcontroller方法。

这是我的Appcontroller

public function date_conversion($date = "11/06/13") {
    $date_format = 'm/d/y';
    $input_date = explode('/', $date);
    return date('Y-m-d', strtotime($input_date[0] . '/' . $input_date[1] . '/' . $input_date[2]));
}

这是我的组件

public function getWeeklyData($start_date)
{
 //AppController::date_conversion($start_date); // Not working
 $appController = ClassRegistry::init('AppController'); 
 $start_date = $appController->date_conversion($start_date);
 echo $start_date;
 exit;
 --------
 ---------
 --------
 --------
 return $final_data;
}

我试过这个  AppController::methodName()

它不能正常工作

由于

2 个答案:

答案 0 :(得分:2)

这是完全错误的:

  • 在控制器中输出格式代码而不是助手(TimeHelper::format()不起作用?)并查看
  • 在组件中使用AppController中的方法,哎,真的很痛,它基本上颠倒了组件的想法。
  • 组件中的业务逻辑而不是模型层(getWeeklyData())
  • 您未遵循任何编码标准惯例
  • 组件方法中甚至存在标记......你打败了将表示与业务逻辑分离的想法

您严重绝对不知道您在设计模式或CakePHP的工作方式方面做了什么。如果您没有以任何方式正确使用它,为什么还要使用框架呢?代码告诉我你真的不知道为什么会有不同的东西,如控制器,模型或组件以及它们是什么。

我建议您在尝试实现应用程序之前重新开始学习MVC框架和设计模式的基础知识。如果整个应用代码看起来像您粘贴的代码,那么在一天结束时它只是不可维护的意大利面条代码。从这里开始阅读https://book.cakephp.org/2.0/en/getting-started.html并进行博客教程。这段代码和你对它的理解有很多不足之处,在这里详尽解释所有这些代码。

答案 1 :(得分:-1)

如果你有这样的AppController类: -

class AppController extends Controller {

    public function callApp(){
        return "This is App Controller and a non-static method";
    }

    public static function staticApp(){
        return "This is a static method";
    }
}

然后你可以在Component中调用它: -

<?php
App::uses('Component', 'Controller');
class FooComponent extends Component{
    public function Foo(){
        // For non static method
        $appController = ClassRegistry::init('AppController');  // Get 
reference of AppController
        echo $appController->callApp();

        echo "<br>";
        // For static method
        echo AppController::staticApp();
    }
}