public function objectFormAction()
{
$success = false;
// getting parameters is very easy ... just call $this->getParam("yorParamKey"); regardless if's POST or GET
if ($this->getParam("firstname") && $this->getParam("lastname") && $this->getParam("email") && $this->getParam("terms")) {
$success = true;
// for this example the class "person" and "inquiry" is used
// first we create a person, then we create an inquiry object and link them together
// check for an existing person with this name
$person = Object\Person::getByEmail($this->getParam("email"), 1);
if (!$person) {
// if there isn't an existing, ... create one
$filename = \Pimcore\File::getValidFilename($this->getParam("email"));
// first we need to create a new object, and fill some system-related information
$person = new Object\Person();
$person->setParent(Object::getByPath("/crm/inquiries"));
// we store all objects in /crm
$person->setKey($filename);
// the filename of the object
$person->setPublished(true);
// yep, it should be published :)
// of course this needs some validation here in production...
$person->setGender($this->getParam("gender"));
$person->setFirstname($this->getParam("firstname"));
$person->setLastname($this->getParam("lastname"));
$person->setEmail($this->getParam("email"));
$person->setDateRegister(new \DateTime());
$person->save();
}
// now we create the inquiry object and link the person in it
$inquiryFilename = \Pimcore\File::getValidFilename(date("Y-m-d") . "~" . $person->getEmail());
$inquiry = new Object\Inquiry();
$inquiry->setParent(Object::getByPath("/inquiries"));
// we store all objects in /inquiries
$inquiry->setKey($inquiryFilename);
// the filename of the object
$inquiry->setPublished(true);
// yep, it should be published :)
// now we fill in the data
$inquiry->setMessage($this->getParam("message"));
$inquiry->setPerson($person);
$inquiry->setDate(new \DateTime());
$inquiry->setTerms((bool) $this->getParam("terms"));
$inquiry->save();
} elseif ($this->getRequest()->isPost()) {
$this->view->error = true;
}
// do some validation & assign the parameters to the view
foreach (["firstname", "lastname", "email", "message", "terms"] as $key) {
if ($this->getParam($key)) {
$this->view->{$key} = htmlentities(strip_tags($this->getParam($key)));
}
}
// assign the status to the view
$this->view->success = $success;
}