【问题标题】:magento passing variable to config.xml from frontendmagento 将变量从前端传递给 config.xml
【发布时间】:2013-07-24 16:42:39
【问题描述】:

我创建了一个自定义模块和一个自定义 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”将被动态设置。非常感谢任何帮助。

【问题讨论】:

    标签: php magento cron crontab cronexpression


    【解决方案1】:
    <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

    【讨论】:

    • 但是你说的不是会在现有的默认系统配置页面中添加一个文本字段吗?我有一个包含表单的自定义 module.phtml 文件。在表单中,我有一个文本字段,它将从用户那里获取 cron_expr 的值,然后我希望在我的 config.xml 中设置这个 cron_expr。有没有办法做到这一点?
    【解决方案2】:

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

    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
      

    我想现在可以理解上面的 setConfig() 方法的操作了。该表还包含一个“crontab/jobs/customer_cron_job/schedule/cron_expr”条目。如果没有,则 config.xml 中有问题。

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 2021-09-30
      • 2022-01-13
      • 2011-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多