Estás leyendo la publicación: Cómo programar dinámicamente un trabajo cron en la configuración del sistema Magento 2
espacio de nombres Proveedor\Extensión\Modelo\Config;
clase CronConfig extiende \Magento\Framework\App\Config\Value
{
const CRON_STRING_PATH = ‘crontab/default/jobs/vendor_extension_cron_job/schedule/cron_expr’;
const CRON_MODEL_PATH = ‘crontab/default/jobs/vendor_extension_cron_job/run/model’;
protegido $_configValueFactory;
protegido $_runModelPath = ”;
función pública __construir(
\Magento\Marco\Modelo\Contexto $contexto,
\Magento\Marco\Registro $registro,
\Magento\Framework\App\Config\ScopeConfigInterface $config,
\Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
\Magento\Framework\Aplicación\Config\ValueFactory $configValueFactory,
\Magento\Framework\Model\ResourceModel\AbstractResource $recurso = nulo,
\Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
$runModelPath = ”,
matriz $datos = []
)
{
$this->_runModelPath = $runModelPath;
$this->_configValueFactory = $configValueFactory;
parent::__construct($context, $registry, $config, $cacheTypeList, $resource, $resourceCollection, $data);
}
función pública afterSave()
{
$hora = $esto->getData(‘groups/cronScheduled/fields/time/value’);
$frecuencia = $esto->getData(‘groups/cronScheduled/fields/frequency/value’);
$cronExprArray = [
intval($time[1]),
intval ($ tiempo[0]),
$frecuencia == \Magento\Cron\Model\Config\Source\Frequency::CRON_MONTHLY ? ‘1’ : ‘*’,
‘*’,
$frecuencia == \Magento\Cron\Model\Config\Source\Frequency::CRON_WEEKLY ? ‘1’ : ‘*’,
];
$cronExprString = unirse(‘ ‘, $cronExprArray);
intentar {
$this->_configValueFactory->create()->load(
auto::CRON_STRING_PATH,
‘camino’
)->establecerValor(
$cronExprString
)->establecerRuta(
auto::CRON_STRING_PATH
)->guardar();
$this->_configValueFactory->create()->load(
auto::CRON_MODEL_PATH,
‘camino’
)->establecerValor(
$this->_runModelPath
)->establecerRuta(
auto::CRON_MODEL_PATH
)->guardar();
} atrapar (\Excepción $e) {
throw new \Exception(__(‘No podemos guardar la expresión cron.’));
}
volver padre::despuésGuardar();
}
}