Cómo programar dinámicamente un trabajo cron en la configuración del sistema Magento 2

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

}

}

🔥 Recomendado:  ¿Qué es la prominencia de la marca y cómo la mido?