Submodules, Erweiterung der Konfiguration
am 07.07.2016 - 08:33 Uhr in
Hallo Forum,
ich habe mir ein Modul mit einer Konfigurationsseite geschrieben - alles kein Problem. Nun, möchte ich mein Modul um ein Submodul erweitern, funktioniert auch prima. Aktueller Stand ist jedoch das ich zwei Konfigurationsseiten habe, eine für das Hauptmodul und eine für das Submodul. Ich hätte jetzt gerne sämtliche Konfigurationselemente des Submodules auf der Konfiugrationsseite des Hauptmodules, beispielsweise sortiert mit vertical tabs.
Meine Herangehensweise wäre jetzt, auf Seiten des Hauptmodules zu prüfen ob das andere Modul aktiv ist und aus einer entsprechenden Funktion die nötigen Felder zu laden. Gibt es eine Möglichkeit über einen hook die Seite zu erweitern ohne im Hauptmodul etwas anfassen zu müssen?
mfg
Tim
- Anmelden oder Registrieren um Kommentare zu schreiben
Andersherum wird ein Schuh
am 07.07.2016 - 09:08 Uhr
Andersherum wird ein Schuh daraus. Das Submodul bekommt eine Abhängigkeit vom Hauptmodul im Infofile eingetragen. Im Submodul entweder mit hook_menu und MENU_LOKAL_TASK in die Konfigseite des Hauptmoduls einen Tab einbauen als eigenständige Konfigurationsseite für das Submodul oder mit hook_form_alter das Konfigurationsformular des Hauptmoduls erweitern.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Ist das auch bei D8 so, ich
am 07.07.2016 - 11:59 Uhr
Ist das auch bei D8 so, ich baue meine Seite ja jetzt mit einem Controller und über "buildForm".
So ein Controller habe ich sowohl im Hauptmodul, als auch im Submodul, ich sehe da kein hook_menu oder ähnliches.
mfg
www.geoportal.de
Hook_menu kann noch verwendet werden
am 07.07.2016 - 22:22 Uhr
ist aber veraltet.
In Drupal 8 werden die Links und Pfade für Menüs in yml-Files abgelegt.
Da legst du auch fest, welchen Eintrag du in welchem menü haben möchtest, und welche Methode deines Modules angesprungen werden soll.
Grüße
Ronald
hook_menu() ist nicht mehr
am 08.07.2016 - 12:04 Uhr
hook_menu() ist nicht mehr verwendbar in Drupal 8: https://www.drupal.org/node/1800686
Hi,vielen Dank für eure
am 08.07.2016 - 13:42 Uhr
Hi,
vielen Dank für eure Tipps, ich kriege es dennoch nicht gebacken (weiß auch nicht genau wonach ich suchen muss).
Hier meine beiden Controller.
<?php
<?php
namespace Drupal\drupal8ogc\Controller;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\user\Entity\User;
class AdminForm extends ConfigFormBase
{
public function getFormId()
{
return 'simmanager_settings_form';
}
protected function getEditableConfigNames()
{
return ['simmanager.settings',];
}
public function buildForm(array $form, FormStateInterface $form_state)
{
$config = $this->config('drupal8ogc.settings');
$form['advanced'] = array(
'#type' => 'vertical_tabs',
'#title' => t('Settings'),
);
$form['base'] = array(
'#type' => 'details',
'#title' => t('Base Settings'),
'#group' => 'advanced',
);
$form['base']['provider'] = array(
'#type' => 'select',
'#title' => $this->t('Provider'),
'#options' => $this->createSelectUsers(),
);
return parent::buildForm($form, $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state)
{
dpm($form);
parent::submitForm($form, $form_state);
}
public function validateForm(array &$form, FormStateInterface $form_state)
{
}
public function createSelectUsers()
{
$ids = \Drupal::entityQuery('user')
->condition('status', 1)
->execute();
$users = User::loadMultiple($ids);
$options = array();
foreach($users as $user)
{
$options[$user->id()] = $user->get('name')->value.', '.$user->get('field_ogc_providername')->value;
}
return $options;
}
}
?>
und in meinem Submodul habe ich folgenden Controller:
<?php
namespace Drupal\drupal8ogc_wfs\Controller;
use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;
class AdminForm extends ConfigFormBase
{
public function getFormId()
{
return 'drupal8ogc_settings_form';
}
protected function getEditableConfigNames()
{
return ['drupal8ogc.settings',];
}
public function buildForm(array $form, FormStateInterface $form_state)
{
$config = $this->config('drupal8ogc_wfs.settings');
$form['description'] = array(
'#markup' => t('Settings for the ogc services.'),
);
$form['advanced'] = array(
'#type' => 'vertical_tabs',
'#title' => t('Settings'),
);
$form['base'] = array(
'#type' => 'details',
'#title' => t('WFS'),
'#group' => 'advanced',
);
$form['base']['name'] = array(
'#type' => 'textfield',
'#title' => $this->t('Name'),
);
return parent::buildForm($form, $form_state);
}
public function submitForm(array &$form, FormStateInterface $form_state)
{
parent::submitForm($form, $form_state);
}
public function validateForm(array &$form, FormStateInterface $form_state)
{
}
}
?>
Mein Ziel ist es das die Felder des Submodule, als zusätzlicher vertical Tab über den Pfad des Hauptmodules angezeigt wird. Leider habe ich es einfach nicht hinbekommen. richtig cool wäre, wenn anschließend beide Formular inhalte auch in separaten settings gespeichert werden würden.
mfg
Tim
www.geoportal.de