Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从代码调用Magento中的管理控制器及其方法?_Php_Magento - Fatal编程技术网

Php 如何从代码调用Magento中的管理控制器及其方法?

Php 如何从代码调用Magento中的管理控制器及其方法?,php,magento,Php,Magento,我正在创建一个脚本,它将从CRON自动完成一些任务,这些任务现在是从后端完成的(手动管理)。如何调用Magento extensions的控制器及其方法并从代码中传递必要的参数 我考虑过使用curl,使用admin登录,并提出必要的请求。但是我想知道是否有一种不使用curl的简单方法来实现这一点,是否只是简单地包含一些文件并调用必要的类和方法,或者是否有一种方法来扩展扩展的类并直接使用它们 比如说, require "Mage.php"; $testcontroller = New TestCo

我正在创建一个脚本,它将从CRON自动完成一些任务,这些任务现在是从后端完成的(手动管理)。如何调用Magento extensions的控制器及其方法并从代码中传递必要的参数

我考虑过使用curl,使用admin登录,并提出必要的请求。但是我想知道是否有一种不使用curl的简单方法来实现这一点,是否只是简单地包含一些文件并调用必要的类和方法,或者是否有一种方法来扩展扩展的类并直接使用它们

比如说,

require "Mage.php";
$testcontroller = New TestController();
$testcontroller->method();

为了让Magento/Zend将所有正确的对象(如请求/响应)放在一起,您需要服务器环境变量,如$\u POST、$\u GET、$\u COOKIE等,所以不要这样做

您的控制器操作应该只作用于某些模型并调用它们的方法。它不应包含应用程序逻辑本身,而应充当“控制器”。在这种情况下,您应该在模块的etc目录中打开config.xml并创建一个cron任务:


通过这种方式,您可以在没有服务器环境的情况下触发应用程序逻辑,并且不再需要控制器。

我能够实现一个解决方案,它可以像我需要的那样正常工作。感谢这一点,也感谢其他发布答案的人

以下代码位于外部脚本上。参数值将通过我的自定义SQL脚本提供

    require "Mage.php";
    require "PATH TO YOUR MAGENTO EXTENSION CONTROLLER.php";

    umask ( 0 );
    Mage::app ( 'admin' );        
    Mage::app()->getRequest()->setParam('TEST','123');

    $testcontroller = New TestController(Mage::app()->getRequest());
    $testcontroller->method();