class LibraryCheckoutForm in Library 8
Library checkout form.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\library\Form\LibraryCheckoutForm
Expanded class hierarchy of LibraryCheckoutForm
1 string reference to 'LibraryCheckoutForm'
File
- src/
Form/ LibraryCheckoutForm.php, line 17
Namespace
Drupal\library\FormView source
class LibraryCheckoutForm extends FormBase {
/**
* Returns a unique string identifying the form.
*
* @return string
* The unique string identifying the form.
*/
public function getFormId() : string {
return 'library_checkout_form';
}
/**
* Form constructor.
*
* @param array $form
* An associative array containing the structure of the form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
* @param string|null $action
* Relevant action.
* @param string|null $item
* Relevant item.
*
* @return array
* The form structure.
*/
public function buildForm(array $form, FormStateInterface $form_state, $action = NULL, $item = NULL) : array {
if ($action == NULL || $item == NULL) {
$form_state
->setErrorByName('action', $this
->t('Required parameters missing'));
return $form;
}
$form['action'] = [
'#type' => 'hidden',
'#value' => $action,
];
$form['library_item'] = [
'#type' => 'hidden',
'#value' => $item,
];
$itemEntity = LibraryItem::load($item);
if ($itemEntity
->get('nid')
->getValue()) {
$node = Node::load($itemEntity
->get('nid')
->getValue()[0]['target_id']);
if ($itemEntity
->get('barcode')->value) {
$format_title = $node
->getTitle() . ' (' . $itemEntity
->get('barcode')->value . ')';
}
else {
$format_title = $node
->getTitle();
}
$form['item_display'] = [
'#type' => 'textfield',
'#title' => $this
->t('Item'),
'#value' => $format_title,
'#disabled' => TRUE,
];
$form['nid'] = [
'#type' => 'value',
'#value' => $node
->id(),
];
}
else {
$form_state
->setErrorByName('item_display', $this
->t('Required parameters missing'));
return $form;
}
$actionEntity = LibraryAction::load($action);
if ($actionEntity
->action() == LibraryAction::CHANGE_TO_UNAVAILABLE) {
$form['patron'] = [
'#type' => 'entity_autocomplete',
'#target_type' => 'user',
'#tags' => TRUE,
'#required' => TRUE,
];
}
$form['notes'] = [
'#type' => 'textarea',
'#title' => $this
->t('Message'),
'#required' => FALSE,
'#maxlength' => 250,
'#default_value' => '',
'#description' => $this
->t('If you are reserving an item, make sure to include the date and time you would like it to be ready.'),
];
$form['submit'] = [
'#type' => 'submit',
'#value' => $actionEntity
->label(),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) : void {
parent::validateForm($form, $form_state);
// @todo Verify that the state change is allowed,
// don't trust the parameters.
}
/**
* Form submission handler.
*
* @param array $form
* An associative array containing the structure of the form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
*/
public function submitForm(array &$form, FormStateInterface $form_state) : void {
$transaction = LibraryTransaction::create();
$transaction
->set('librarian_id', \Drupal::currentUser()
->id());
$transaction
->set('nid', $form_state
->getValue('nid'));
$transaction
->set('uid', $form_state
->getValue('patron')[0]['target_id']);
$transaction
->set('library_item', $form_state
->getValue('library_item'));
$transaction
->set('action', $form_state
->getValue('action'));
$transaction
->set('due_date', LibraryItemHelper::computeDueDate($form_state
->getValue('action'), $form_state
->getValue('nid')));
$transaction
->set('notes', $form_state
->getValue('notes'));
$transaction
->save();
LibraryItemHelper::updateItemAvailability($form_state
->getValue('library_item'), $form_state
->getValue('action'));
\Drupal::service('cache_tags.invalidator')
->invalidateTags([
'node:' . $form_state
->getValue('nid'),
]);
$this
->messenger()
->addStatus($this
->t('Transaction processed.'));
\Drupal::service('event_dispatcher')
->dispatch('library.action', new ActionEvent($transaction));
$form_state
->setRedirect('entity.node.canonical', [
'node' => $form_state
->getValue('nid'),
]);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 1 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Retrieves a configuration object. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 1 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
87 |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
LibraryCheckoutForm:: |
public | function |
Form constructor. Overrides FormInterface:: |
|
LibraryCheckoutForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
LibraryCheckoutForm:: |
public | function |
Form submission handler. Overrides FormInterface:: |
|
LibraryCheckoutForm:: |
public | function |
Form validation handler. Overrides FormBase:: |
|
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |