public function chooseAction(HttpRequest $request) { $action = Primitive::choice('action')->setList($this->methodMap); if ($this->getDefaultAction()) { $action->setDefault($this->getDefaultAction()); } Form::create()->add($action)->import($request->getGet())->importMore($request->getPost())->importMore($request->getAttached()); if (!($command = $action->getValue())) { return $action->getDefault(); } return $command; }
/** * @static * @param AbstractProtoClass $proto * @param array $fields * @return Form */ public static function makeForm(AbstractProtoClass $proto, array $fields) { $form = Form::create(); foreach ($fields as $field) { try { $property = self::getProperty($proto, $field); } catch (MissingElementException $e) { continue; //skip } $prefix = strrev(strrchr(strrev($field), '.')); $property->fillForm($form, $prefix); $primitive = $form->get($field); if ($primitive instanceof PrimitiveString) { if ($property->getMax()) { $primitive->setImportFilter(Filter::chain()->add(Filter::trim()->setBoth())->add(Filter::safeUtf8())->add(Filter::htmlSpecialChars())); } else { $primitive->setImportFilter(Filter::chain()->add(Filter::trim()->setBoth())->add(Filter::safeUtf8())->add(Filter::htmlSpecialChars())->add(Filter::replaceSymbols("\r", ''))->add(Filter::replaceSymbols("\n", ' '))); } } } return $form; }
/** * @return Form * @deprecated you should use PrototypedBuilder to make forms **/ public final function makeForm() { return $this->attachPrimitives($this->baseProto() ? $this->baseProto()->makeForm() : Form::create()); }
/** * @return Form **/ protected function makeForm() { $form = Form::create(); foreach ($this->getFormMapping() as $primitive) { $form->add($primitive); } return $form; }
/** * @return Form **/ protected function createEmpty() { return Form::create(); }
/** * @return Form **/ public function makeForm($prefix = null) { $form = Form::create(); foreach ($this->getPropertyList() as $property) { $property->fillForm($form, $prefix); } return $form; }
/** * @return Form */ public static function removePrefix(Form $form, $prefix) { $newForm = Form::create(); foreach ($form->getPrimitiveList() as $primitive) { $primitive->setName(strtr($primitive->getName(), [$prefix => ''])); $newForm->add($primitive); } return $newForm; }