public function buildForm(FormBuilderInterface $builder, array $options)
{
$basket = $builder->getData();
if (!$basket instanceof BasketInterface) {
throw new \RuntimeException('Please provide a BasketInterface instance');
}
$methods = $this->deliverySelector->getAvailableMethods($basket, $basket->getDeliveryAddress());
if (count($methods) === 0) {
throw new UndeliverableCountryException($basket->getDeliveryAddress());
}
$choices = array();
foreach ($methods as $method) {
$choices[$method->getCode()] = $method->getName();
}
reset($methods);
$method = $basket->getDeliveryMethod() ?: current($methods);
$basket->setDeliveryMethod($method ?: null);
$sub = $builder->create('deliveryMethod', 'choice', array('expanded' => true, 'choice_list' => new SimpleChoiceList($choices)));
$sub->addViewTransformer(new DeliveryMethodTransformer($this->deliveryPool), true);
$builder->add($sub);
}