예제 #1
0
 /**
  * Builds the form for the basic server properties.
  *
  * @param \Drupal\search_api\ServerInterface $server
  *   The server that is being created or edited.
  */
 public function buildEntityForm(array &$form, FormStateInterface $form_state, ServerInterface $server)
 {
     $form['#attached']['library'][] = 'search_api/drupal.search_api.admin_css';
     $form['name'] = array('#type' => 'textfield', '#title' => $this->t('Server name'), '#description' => $this->t('Enter the displayed name for the server.'), '#default_value' => $server->label(), '#required' => TRUE);
     $form['id'] = array('#type' => 'machine_name', '#default_value' => $server->id(), '#maxlength' => 50, '#required' => TRUE, '#machine_name' => array('exists' => array($this->getStorage(), 'load'), 'source' => array('name')), '#disabled' => !$server->isNew());
     $form['status'] = array('#type' => 'checkbox', '#title' => $this->t('Enabled'), '#description' => $this->t('Only enabled servers can index items or execute searches.'), '#default_value' => $server->status());
     $form['description'] = array('#type' => 'textarea', '#title' => $this->t('Description'), '#description' => $this->t('Enter a description for the server.'), '#default_value' => $server->getDescription());
     $backend_options = $this->getBackendOptions();
     if ($backend_options) {
         if (count($backend_options) == 1) {
             $server->set('backend', key($backend_options));
         }
         $form['backend'] = array('#type' => 'radios', '#title' => $this->t('Backend'), '#description' => $this->t('Choose a backend to use for this server.'), '#options' => $backend_options, '#default_value' => $server->getBackendId(), '#required' => TRUE, '#ajax' => array('callback' => array(get_class($this), 'buildAjaxBackendConfigForm'), 'wrapper' => 'search-api-backend-config-form', 'method' => 'replace', 'effect' => 'fade'));
     } else {
         drupal_set_message($this->t('There are no backend plugins available for the Search API. Please install a <a href=":url">module that provides a backend plugin</a> to proceed.', array(':url' => Url::fromUri('https://www.drupal.org/node/1254698')->toString())), 'error');
         $form = array();
     }
 }