Cakephp在组件中加载Appcontroller方法

Cakephp load Appcontroller method in component

我想在组件中加载 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()

没用

谢谢

如果你有这样的 AppController class:-

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();
    }
}

这是完全错误的:

  • 在控制器而不是助手中输出格式化代码(TimeHelper::format() 不起作用?)和视图
  • 在组件中使用AppController中的方法,哎呀,真伤人,基本上颠覆了组件的概念。
  • 组件中的业务逻辑而不是模型层 (getWeeklyData())
  • 您没有遵守任何编码标准约定
  • 组件方法中甚至还有标记...您打败了将表示与业务逻辑分离的想法

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

我建议您重新开始并学习 MVC frameworks and design patterns before trying to implement an application. If the whole app code looks like your pasted code it's just unmaintainable spaghetti code at the end of the day. Start reading here https://book.cakephp.org/2.0/en/getting-started.html 的基础知识,并完成博客教程。这段代码和你对它的理解有很多错误,在这里完整地解释所有这些是非常详尽的。