123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- <?php
- namespace Drupal\devel_generate\Form;
- use Drupal\Component\Plugin\PluginManagerInterface;
- use Drupal\Core\Form\FormBase;
- use Drupal\Core\Form\FormStateInterface;
- use Drupal\devel_generate\DevelGenerateException;
- use Symfony\Component\DependencyInjection\ContainerInterface;
- /**
- * Defines a form that allows privileged users to generate entities.
- */
- class DevelGenerateForm extends FormBase {
- /**
- * The manager to be used for instantiating plugins.
- *
- * @var \Drupal\Component\Plugin\PluginManagerInterface
- */
- protected $develGenerateManager;
- /**
- * Constructs a new DevelGenerateForm object.
- *
- * @param \Drupal\Component\Plugin\PluginManagerInterface $devel_generate_manager
- * The manager to be used for instantiating plugins.
- */
- public function __construct(PluginManagerInterface $devel_generate_manager) {
- $this->develGenerateManager = $devel_generate_manager;
- }
- /**
- * {@inheritdoc}
- */
- public static function create(ContainerInterface $container) {
- return new static(
- $container->get('plugin.manager.develgenerate')
- );
- }
- /**
- * {@inheritdoc}
- */
- public function getFormId() {
- return 'devel_generate_form_' . $this->getPluginIdFromRequest();
- }
- /**
- * Returns the value of the param _plugin_id for the current request.
- *
- * @see \Drupal\devel_generate\Routing\DevelGenerateRouteSubscriber
- */
- protected function getPluginIdFromRequest() {
- $request = $this->getRequest();
- return $request->get('_plugin_id');
- }
- /**
- * Returns a DevelGenerate plugin instance for a given plugin id.
- *
- * @param string $plugin_id
- * The plugin_id for the plugin instance.
- *
- * @return \Drupal\devel_generate\DevelGenerateBaseInterface
- * A DevelGenerate plugin instance.
- */
- public function getPluginInstance($plugin_id) {
- $instance = $this->develGenerateManager->createInstance($plugin_id, array());
- return $instance;
- }
- /**
- * {@inheritdoc}
- */
- public function buildForm(array $form, FormStateInterface $form_state) {
- $plugin_id = $this->getPluginIdFromRequest();
- $instance = $this->getPluginInstance($plugin_id);
- $form = $instance->settingsForm($form, $form_state);
- $form['actions'] = ['#type' => 'actions'];
- $form['actions']['submit'] = [
- '#type' => 'submit',
- '#value' => $this->t('Generate'),
- '#button_type' => 'primary',
- ];
- return $form;
- }
- /**
- * {@inheritdoc}
- */
- public function validateForm(array &$form, FormStateInterface $form_state) {
- $plugin_id = $this->getPluginIdFromRequest();
- $instance = $this->getPluginInstance($plugin_id);
- $instance->settingsFormValidate($form, $form_state);
- }
- /**
- * {@inheritdoc}
- */
- public function submitForm(array &$form, FormStateInterface $form_state) {
- try {
- $plugin_id = $this->getPluginIdFromRequest();
- $instance = $this->getPluginInstance($plugin_id);
- $instance->generate($form_state->getValues());
- }
- catch (DevelGenerateException $e) {
- $this->logger('DevelGenerate', $this->t('Failed to generate elements due to "%error".', array('%error' => $e->getMessage())));
- drupal_set_message($this->t('Failed to generate elements due to "%error".', array('%error' => $e->getMessage())));
- }
- }
- }
|