3 namespace Drupal\metatag_views\Form;
5 use Drupal\Core\Form\FormStateInterface;
6 use Drupal\metatag_views\Controller\MetatagViewsController;
7 use Drupal\views\Views;
10 * Class MetatagViewsAddForm.
12 * @package Drupal\metatag_views\Form
14 class MetatagViewsAddForm extends MetatagViewsEditForm {
19 public function getFormId() {
20 return 'metatag_views_add_form';
26 public function buildForm(array $form, FormStateInterface $form_state) {
27 $form = parent::buildForm($form, $form_state);
29 // Add a view select to the edit form.
30 $views = Views::getViewsAsOptions(FALSE, 'enabled', NULL, TRUE, TRUE);
31 // Get only the views that do not have the metatags set yet.
32 $in_use = MetatagViewsController::getTaggedViews();
33 foreach ($in_use as $view_id => $displays) {
34 foreach (array_keys($displays) as $display_id) {
35 unset($views[$view_id][$view_id . ':' . $display_id]);
38 $views = array_filter($views);
40 // Need to create that AFTER the $form['metatags'] as the whole form
41 // is passed to the $metatagManager->form() which causes duplicated field.
42 $form['view']['#type'] = 'select';
43 $form['view']['#options'] = $views;
44 $form['view']['#empty_option'] = $this->t('- Select a view -');