class FlexiformController in Flexiform 8
Controller for flexiform pages.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\flexiform\Controller\FlexiformController
Expanded class hierarchy of FlexiformController
File
- src/
Controller/ FlexiformController.php, line 19
Namespace
Drupal\flexiform\ControllerView source
class FlexiformController extends ControllerBase {
/**
* The token service.
*
* @var \Drupal\flexiform\Utility\Token
*/
protected $token;
/**
* The entity form builder.
*
* @var \Drupal\Core\Form\FormBuilderInterface
*/
protected $formBuilder;
/**
* The flexiform manager.
*
* @var \Drupal\flexiform\FlexiformManager
*/
protected $flexiformManager;
/**
* Construct a new flexiform controller.
*
* @param \Drupal\flexiform\Utility\Token $token
* The token service.
* @param \Drupal\Core\Form\FormBuilderInterface $form_builder
* The entity form builder.
* @param \Drupal\flexiform\FlexiformManager $flexiform_manager
* The flexiform manager.
*/
public function __construct(Token $token, FormBuilderInterface $form_builder, FlexiformManager $flexiform_manager) {
$this->token = $token;
$this->formBuilder = $form_builder;
$this->flexiformManager = $flexiform_manager;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('flexiform.token'), $container
->get('form_builder'), $container
->get('flexiform.manager'));
}
/**
* Flexiform form mode page.
*/
public function formModePage(EntityFormMode $form_mode, Request $request) {
$provided = $this
->getProvidedEntities($form_mode, $request);
$entity = $provided['base_entity'];
unset($provided['base_entity']);
$settings = $form_mode
->getThirdPartySetting('flexiform', 'exposure');
list($entity_type_id, $display_mode_name) = explode('.', $form_mode
->id(), 2);
$entity_form_display = EntityFormDisplay::collectRenderDisplay($entity, $display_mode_name);
$form_object = $this->flexiformManager
->getFormObject($entity_form_display, [
$entity_form_display
->getBaseEntityNamespace() => $entity,
]);
$form_state = new FormState();
$form_state
->set('form_entity_provided', $provided);
return $this->formBuilder
->buildForm($form_object, $form_state);
}
/**
* Flexiform form mode title callback.
*/
public function formModePageTitle(EntityFormMode $form_mode, Request $request) {
$settings = $form_mode
->getThirdPartySetting('flexiform', 'exposure');
$entities = $this
->getProvidedEntities($form_mode, $request);
// @todo: Move this process somewhere better.
$token_data = $token_options = [];
$token_info = $this->token
->getInfo();
foreach ($entities as $namespace => $entity) {
$token_type = $entity
->getEntityType()
->get('token_type') ?: (!empty($token_info['types'][$entity
->getEntityTypeId()]) ? $entity
->getEntityTypeId() : FALSE);
if ($token_type) {
$token_data[$namespace] = $entity;
$token_options['alias'][$namespace] = $token_type;
}
}
return $this->token
->replace($settings['title'], $token_data, $token_options);
}
/**
* Get the provided entities.
*
* @return \Drupal\Core\Entity\EntityInterface[]
* An array of provided entities keyed by machine name.
*/
protected function getProvidedEntities(EntityFormMode $form_mode, Request $request) {
$route_match = RouteMatch::createFromRequest($request);
$settings = $form_mode
->getThirdPartySetting('flexiform', 'exposure');
$provided = [];
$provided['base_entity'] = $route_match
->getParameter('base_entity');
foreach ($settings['parameters'] as $namespace => $info) {
if ($provided_entity = $route_match
->getParameter($namespace)) {
$provided[$namespace] = $provided_entity;
}
}
return $provided;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
FlexiformController:: |
protected | property | The flexiform manager. | |
FlexiformController:: |
protected | property |
The entity form builder. Overrides ControllerBase:: |
|
FlexiformController:: |
protected | property | The token service. | |
FlexiformController:: |
public static | function |
Instantiates a new instance of this class. Overrides ControllerBase:: |
|
FlexiformController:: |
public | function | Flexiform form mode page. | |
FlexiformController:: |
public | function | Flexiform form mode title callback. | |
FlexiformController:: |
protected | function | Get the provided entities. | |
FlexiformController:: |
public | function | Construct a new flexiform controller. | |
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. |