View source
<?php
namespace Drupal\uc_attribute\Form;
use Drupal\Core\Database\Connection;
use Drupal\Core\DependencyInjection\ContainerInjectionInterface;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
abstract class AttributeFormBase extends FormBase implements ContainerInjectionInterface {
protected $database;
public function __construct(Connection $database) {
$this->database = $database;
}
public static function create(ContainerInterface $container) {
return new static($container
->get('database'));
}
public function getFormId() {
return 'uc_attribute_form';
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form['name'] = [
'#type' => 'textfield',
'#title' => $this
->t('Name'),
'#description' => $this
->t('The name of the attribute used in administrative forms'),
'#default_value' => '',
'#required' => TRUE,
];
$form['label'] = [
'#type' => 'textfield',
'#title' => $this
->t('Label'),
'#description' => $this
->t("Enter a label that customers will see instead of the attribute name. Use <none> if you don't want a title to appear at all."),
'#default_value' => '',
'#maxlength' => 255,
];
$form['description'] = [
'#type' => 'textfield',
'#title' => $this
->t('Help text'),
'#description' => $this
->t('<b>Optional.</b> Enter the help text that will display beneath the attribute on product add to cart forms.'),
'#default_value' => '',
'#maxlength' => 255,
];
$form['required'] = [
'#type' => 'checkbox',
'#title' => $this
->t('Make this attribute required, forcing the customer to choose an option.'),
'#description' => $this
->t('Selecting this for an attribute will disregard any default option you specify.<br />May be overridden at the product level.'),
'#default_value' => 0,
];
$form['display'] = [
'#type' => 'select',
'#title' => $this
->t('Display type'),
'#description' => $this
->t('This specifies how the options for this attribute will be presented.<br />May be overridden at the product level.'),
'#options' => _uc_attribute_display_types(),
'#default_value' => 1,
];
$form['ordering'] = [
'#type' => 'weight',
'#delta' => 25,
'#title' => $this
->t('List position'),
'#description' => $this
->t('Multiple attributes on an add to cart form are sorted by this value and then by their name.<br />May be overridden at the product level.'),
'#default_value' => 0,
];
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->t('Submit'),
];
$form['actions']['cancel'] = [
'#type' => 'link',
'#title' => $this
->t('Cancel'),
'#url' => Url::fromRoute('uc_attribute.overview'),
];
return $form;
}
}