magento从前端将变量传递给config.xml

时间:2013-07-23 11:23:04

标签: php magento cron crontab cronexpression

我创建了一个自定义模块和一个自定义cron作业。这是我的代码:

<crontab>
    <jobs>
        <customer_cron_job>
            <schedule>
                <cron_expr>*/1 * * * *</cron_expr><!-- will be configurable from custom admin frontend-->
            </schedule>
            <run>
                <model>globalconnector/observer::cronUpdates</model>
            </run>
        </customer_cron_job>
    </jobs>
</crontab>

现在这个模块有一个自定义的管理员前端。在这里,我想为用户提供功能,以指定要运行的cron作业的时间(cron_expr)。即'cron_expr'将被动态设置。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

<crontab>
        <jobs>                
            <company_export_send_order>
                <schedule>
                    <!-- Use the config path in your system.xml here -->
                    <config_path>globalconnector/general/cron_settings</config_path>
                </schedule>
                <run>
                    <model>globalconnector/observer::cronUpdates</model>
                </run>
            </company_export_send_order>
        </jobs>
    </crontab>

在模块的system.xml中,只需定义一个输入cron表达式的文本字段。

此处提供更多详细信息:magento cron in backend configuration

答案 1 :(得分:0)

我明白了....这就是我所做的。

  1. 从config.xml

    中评论以下内容
         <schedule>
            <cron_expr>*/1 * * * *</cron_expr><!-- will be configurable from custom admin frontend-->
        </schedule>
    
  2. 我为自定义adminmodule.phtml创建了一个块文件。此文件包含一个表单,用户提供各种参数,然后在同一页面上提交表单。

  3. 我创建了一个名为setCron($ cronData)的函数。从phtml:

    调用此函数
    $this->setCron($_POST)
    
  4. 功能如下

    function setCron($cronData){
        $gcSwitch = new Mage_Core_Model_Config();
        $cronExprString = '';
        foreach ($cronData as $key => $value) {
            $cronExprString = $cronExprString.' '.$value;
        }
        $cronExprString = ltrim($cronExprString);
    
        $gcSwitch ->saveConfig('crontab/jobs/customer_cron_job/schedule/cron_expr', $cronExprString, 'default', 0);
    }
    

    这样做是为了更新数据库中的“core_config_data”表。有关更多证据,可以查看此表。此表包含以下列:

    config_id(PK),scope,scope_id,path,value
    
  5. 我认为现在可以理解上面的setConfig()方法操作了。该表还包含“crontab / jobs / customer_cron_job / schedule / cron_expr”的条目。如果没有,则config.xml中存在一些问题。