/**
  * Overwrite default product form and add our custom list
  * 
  * @return Form 
  */
 public function Form()
 {
     $object = $this->dataRecord;
     $field_type = $this->ShowChildrenAs . "Field";
     $children = ArrayList::create();
     $form = Form::create($this, "Form", FieldList::create(HiddenField::create('ClassName')->setValue("Product"), $id_field = ChildProductSelectField::create("ID", _t("GroupedProduct.PleaseSelect", "Please Select:"))->addExtraClass('forms-list'), QuantityField::create('Quantity', _t('Commerce.Qty', 'Qty'))->setValue('1')->addExtraClass('checkout-additem-quantity')), FieldList::create(FormAction::create('doAddItemToCart', _t('Commerce.AddToCart', 'Add to Cart'))->addExtraClass('btn')->addExtraClass('btn-green')), new RequiredFields(array("ID", "Quantity")));
     // Generate our list of children
     foreach ($object->ChildProducts() as $product) {
         $price = (int) $product->Price ? $product->Price : $object->Price;
         $price_diff = $price - $object->Price;
         $children->add(new ArrayData(array("ID" => $product->ID, "Title" => $product->Title, "Price" => $price, "PriceDiff" => $price_diff)));
     }
     $id_field->setSource($children);
     return $form;
 }
 public function __construct($controller, $product, $name = "AddItemForm")
 {
     $productID = $product ? $product->ID : 0;
     $fields = FieldList::create(HiddenField::create('ProductID')->setValue($productID));
     $actions = FieldList::create(FormAction::create('doAddItemToCart', _t('Commerce.AddToCart', 'Add to Cart'))->addExtraClass('btn'));
     $requirements = new RequiredFields(array("Quantity"));
     // If product colour customisations are set, add them to the item form
     if ($product && $product->Customisations()->exists()) {
         foreach ($product->Customisations() as $customisation) {
             $field = $customisation->Field();
             $fields->add($field);
             // Check if field required
             if ($customisation->Required) {
                 $requirements->addRequiredField($field->getName());
             }
         }
     }
     $quantity_fields = QuantityField::create('Quantity', _t('Commerce.CartQty', 'Qty'))->setValue('1')->addExtraClass('commerce-additem-quantity');
     // Add quantity, so it appears at the end of the fields
     $fields->add($quantity_fields);
     parent::__construct($controller, $name, $fields, $actions, $requirements);
 }