public function __construct($controller, $name = "VariationForm") { parent::__construct($controller, $name); $product = $controller->data(); $farray = array(); $requiredfields = array(); $attributes = $product->VariationAttributeTypes(); foreach ($attributes as $attribute) { $farray[] = $attribute->getDropDownField("Choose {$attribute->Label} ...", $product->possibleValuesForAttributeType($attribute)); $requiredfields[] = "ProductAttributes[{$attribute->ID}]"; } $fields = new FieldList($farray); if (self::$include_json) { $vararray = array(); if ($vars = $product->Variations()) { foreach ($vars as $var) { $vararray[$var->ID] = $var->AttributeValues()->map('ID', 'ID'); } } $fields->push(new HiddenField('VariationOptions', 'VariationOptions', json_encode($vararray))); } $fields->merge($this->Fields()); $this->setFields($fields); $requiredfields[] = 'Quantity'; $this->setValidator(new VariationFormValidator($requiredfields)); $this->extend('updateVariationForm'); }
public function __construct($controller, $name = "VariationForm") { parent::__construct($controller, $name); $product = $controller->data(); $farray = array(); $requiredfields = array(); $attributes = $product->VariationAttributeTypes(); foreach ($attributes as $attribute) { $attributeDropdown = $attribute->getDropDownField(_t('VariationForm.ChooseAttribute', "Choose {attribute} …", '', array('attribute' => $attribute->Label)), $product->possibleValuesForAttributeType($attribute)); if ($attributeDropdown) { $farray[] = $attributeDropdown; $requiredfields[] = "ProductAttributes[{$attribute->ID}]"; } } $fields = FieldList::create($farray); if (self::$include_json) { $vararray = array(); $query = $query2 = new SQLQuery(); $query->setSelect('ID')->setFrom('ProductVariation')->addWhere(array('ProductID' => $product->ID)); if (!Product::config()->allow_zero_price) { $query->addWhere('"Price" > 0'); } foreach ($query->execute()->column('ID') as $variationID) { $query2->setSelect('ProductAttributeValueID')->setFrom('ProductVariation_AttributeValues')->setWhere(array('ProductVariationID' => $variationID)); $vararray[$variationID] = $query2->execute()->keyedColumn(); } $fields->push(HiddenField::create('VariationOptions', 'VariationOptions', json_encode($vararray))); } $fields->merge($this->Fields()); $this->setFields($fields); $requiredfields[] = 'Quantity'; $this->setValidator(VariationFormValidator::create($requiredfields)); $this->extend('updateVariationForm'); }