<?php /** @var ecQuotes $ecquotes */ $ecq = $modx->getService('ecquotes', 'ecQuotes', $modx->getOption('ecquotes.core_path', null, $modx->getOption('core_path') . 'components/ecquotes/') . 'model/ecquotes/', $scriptProperties); if (!($ecq instanceof ecQuotes)) { $ecq->logError($snippet, 'Failed to load class: ecQuotes.'); return ''; } $formFields = array(); $formFields = $hook->getValues(); $custFields = $ecq->getCustomerFields($formFields); $reqFields = $ecq->getRequestFields($formFields); $custObj = $modx->newObject('QuoteCustomer', $custFields); $reqObj = $modx->newObject('QuoteRequest', $reqFields); $reqObj->addOne($custObj); if (!is_object($reqObj) || !($reqObj instanceof xPDOObject)) { $ecq->logError($snippet, 'Failed to create object.'); return false; } if (!$reqObj->save()) { $ecq->logError($snippet, 'An error occured while saving object: QuoteRequest.'); return false; } return true;
/** * Get customer form field values * * @param array $fields a collection of the Formit fields */ public function getCustomerFields(array $fields) { $this->custFields = array( 'firstname' => $fields['firstname'], 'lastname' => $fields['lastname'], 'email' => $fields['email'], 'phone' => $fields['phone'], 'company' => $fields['company'], 'website' => $fields['website'] ); return $this->custFields; }
This question has been answered by BobRay. See the first response.
$custObj = $modx->newObject('QuoteCustomer'); $custObj->fromArray($custFields);
$custObj = $modx->newObject('QuoteCustomer'); $custObj->set('firstname', $fields['firstname']); $custObj->set('lastname', $fields['lastname']); // etc.
$reqObj = $modx->newObject('QuoteRequest'); $reqObj->set('servicedate', 1482813786); $reqObj->set('city_pickup', 'Townsville'); $custObj = $modx->newObject('QuoteCustomer'); $custObj->set('firstname', 'John'); $custObj->set('lastname', 'Doe');
$custObj->save();
[2016-12-27 00:31:04] (ERROR @ /Users/path/core/xpdo/xpdo.class.php : 643) Could not load class: QuoteCustomer from mysql.quotecustomer. [2016-12-27 00:31:04] (ERROR @ /Users/path/core/xpdo/xpdo.class.php : 643) Could not load class: QuoteRequest from mysql.quoterequest.
$custObj = $modx->newObject('QuoteCustomer', array( 'firstname' => 'John', 'lastname' => 'Doe', 'email' => '[email protected]', 'phone' => '212-555-5555' )); $reqObj = $modx->newObject('QuoteRequest', array( 'servicedate' => strtotime('2016-12-29'), 'streetnumber_pickup' => 6, 'streetname_pickup' => 'Avenue Road' )); $reqObj->addOne($custObj); if (!is_object($reqObj) || !($reqObj instanceof xPDOObject)) { $ecq->logError($snippet, 'Failed to create object.'); return false; } if (!$reqObj->save()) { $ecq->logError($snippet, 'An error occured while saving object: QuoteRequest.'); return false; } return true;
<?xml version="1.0" encoding="UTF-8"?> <model package="ecquotes" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1"> <object class="QuoteCustomer" table="ecquotes_customers" extends="xPDOSimpleObject"> <field key="firstname" dbtype="varchar" precision="100" phptype="string" null="false" default=""/> <field key="lastname" dbtype="varchar" precision="100" phptype="string" null="false" default=""/> ... <composite alias="Request" class="QuoteRequest" local="id" foreign="customer" cardinality="many" owner="local"/> <composite alias="Process" class="QuoteProcess" local="id" foreign="customer" cardinality="many" owner="local"/> <composite alias="Booking" class="QuoteBooking" local="id" foreign="customer" cardinality="many" owner="local"/> </object> <object class="QuoteRequest" table="ecquotes_requests" extends="xPDOSimpleObject"> <field key="customer" dbtype="int" precision="10" phptype="integer" null="false" default=""/> ... <aggregate alias="Customer" class="QuoteCustomer" local="customer" foreign="id" cardinality="one" owner="foreign"/> <composite alias="Process" class="QuoteProcess" local="id" foreign="request" cardinality="many" owner="local"/> <composite alias="Booking" class="QuoteBooking" local="id" foreign="request" cardinality="many" owner="local"/> </object> ... </model>