/** * @param $obj InterfaceWeight * @return string */ public function html($obj) { Assert::assert($obj); $o = ''; $o .= '<form style="display: inline;" method="post" action="' . \OLOG\Url::getCurrentUrl() . '">'; $o .= Operations::operationCodeHiddenField(CRUDTable::OPERATION_SWAP_MODEL_WEIGHT); $o .= '<input type="hidden" name="' . self::FORMFIELD_CONTEXT_FIELDS_NAME . '" value="' . Sanitize::sanitizeAttrValue(implode(',', array_keys($this->context_fields_arr))) . '">'; foreach ($this->context_fields_arr as $context_field_name => $context_field_value) { $context_field_value = CRUDCompiler::compile($context_field_value, ['this' => $obj]); $o .= NullablePostFields::hiddenFieldHtml($context_field_name, $context_field_value); } $o .= '<input type="hidden" name="_class_name" value="' . Sanitize::sanitizeAttrValue(get_class($obj)) . '">'; $o .= '<input type="hidden" name="_id" value="' . Sanitize::sanitizeAttrValue(CRUDFieldsAccess::getObjId($obj)) . '">'; $o .= '<button class="' . $this->button_class_str . '" type="submit">' . $this->button_text . '</button>'; $o .= '</form>'; return $o; }
protected static function swapModelWeightOperation() { $model_class_name = POSTAccess::getRequiredPostValue('_class_name'); // TODO: constant for field name \OLOG\CheckClassInterfaces::exceptionIfClassNotImplementsInterface($model_class_name, \OLOG\Model\InterfaceWeight::class); $model_id = POSTAccess::getRequiredPostValue('_id'); // TODO: constant for field name $context_fields_names_str = POSTAccess::getRequiredPostValue(CRUDTableWidgetWeight::FORMFIELD_CONTEXT_FIELDS_NAME); $context_fields_names_arr = explode(',', $context_fields_names_str); $context_arr = []; foreach ($context_fields_names_arr as $context_field_name) { $context_arr[$context_field_name] = NullablePostFields::optionalFieldValue($context_field_name); } /** @var InterfaceWeight $obj */ $obj = CRUDObjectLoader::createAndLoadObject($model_class_name, $model_id); $obj->swapWeights($context_arr); \OLOG\Redirects::redirectToSelf(); }