Fatal error: Cannot redeclare class StartupCreateProcessor in /home/offnotee/demoofby/core/components/startup/processors/mgr/create.class.php on line 47
class StartupCreateProcessor extends modObjectCreateProcessor { public $objectType = 'Startup'; public $classKey = 'Startup'; public $languageTopics = array('startup'); public $description='012345|987642'; //public $permission = 'create'; /** * @return bool */ public function beforeSet() { $name = trim($this->getProperty('name')); if (empty($name)) { $this->modx->error->addField('name', $this->modx->lexicon('startup_item_err_name')); } elseif ($this->modx->getCount($this->classKey, array('name' => $name))) { $this->modx->error->addField('name', $this->modx->lexicon('startup_item_err_ae')); } return parent::beforeSet(); } /** * @return bool*/ public function beforeSave() { return parent::beforeSave(); } } return 'StartupCreateProcessor';
Для этого создал файл action.php, в нём прописал вызов метода из класса, В методе вызывается runProcessor создание документа.
if (empty($_REQUEST['action'])) { die('Access denied'); } else { $action = $_REQUEST['action']; } define('MODX_API_MODE', true); require_once dirname(dirname(dirname(dirname(dirname(__FILE__))))) . '/index.php'; $modx->getService('error', 'error.modError'); $modx->getRequest(); $modx->setLogLevel(modX::LOG_LEVEL_ERROR); $modx->setLogTarget('FILE'); $modx->error->message = null; // Get properties $properties = array(); /* @var Startup $Startup */ define('MODX_ACTION_MODE', true); $Startup = $modx->getService('startup', 'Startup', $modx->getOption('startup_core_path', null, $modx->getOption('core_path') . 'components/startup/') . 'model/startup/', $properties); if ($modx->error->hasError() || !($Startup instanceof Startup)) { die('Error'); } switch ($action) { case 'projekt/save': $response= $Startup->saveProjekt($_POST); break; default: $message = $_REQUEST['action'] != $action ? 'startup_err_register_globals' : 'startup_err_unknown'; $response = $modx->toJSON(array('success' => false, 'message' => $modx->lexicon($message))); } if (is_array($response)) { $response = $modx->toJSON($response); } //@session_write_close(); exit($response);
Как вариант: может у вас класс не по фэншую называется. Попробуйте закомментировать return 'StartupCreateProcessor'; и выполнить $modx->runProcessor() на него. Если название не соответствует принципу именований классов-процессоров MODX-а, то вы должны получить ошибку его вызова, потому как MODX не будет знать какой класс он вызывает.
require_once MODX_CORE_PATH . 'components/startup/processors/mgr/create.class.php'; require_once MODX_CORE_PATH . 'components/startup/processors/mgr/update.class.php';
public function saveProjekt($data = array()){ print_r($data); $response = $this->xpdo->runProcessor('mgr/create', $data,array('processors_path' => $this->xpdo->getOption('startup_core_path', null, $this->xpdo->getOption('core_path') . 'components/startup/') .'processors/'),$data);
вы сам процессор в итоге вызываете в своем классе в методе saveProjekt()? А зачем? И дайте еще листинг вашего этого класса. Подозреваю, что именно там проблема.