UserFormModeController.php in Form mode manager 8
File
src/Controller/UserFormModeController.php
View source
<?php
namespace Drupal\form_mode_manager\Controller;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Routing\RouteMatchInterface;
class UserFormModeController extends EntityFormModeBase {
public function entityAdd(RouteMatchInterface $route_match) {
$entity = $this
->getEntityFromRouteMatch($route_match);
if (empty($entity)) {
$route_entity_type_info = $this
->getEntityTypeFromRouteMatch($route_match);
$entity = $this->entityTypeManager
->getStorage($route_entity_type_info['entity_type_id'])
->create([
$route_entity_type_info['entity_key'] => $route_entity_type_info['bundle'],
]);
}
$form_mode_id = $this->formModeManager
->getFormModeMachineName($route_match
->getRouteObject()
->getOption('parameters')['form_mode']['id']);
$operation = empty($form_mode_id) ? 'register' : $form_mode_id;
if ($entity instanceof EntityInterface) {
return $this->entityFormBuilder
->getForm($entity, $operation);
}
}
public function entityEdit(RouteMatchInterface $route_match) {
$entity = $this
->getEntityFromRouteMatch($route_match);
$form_mode_id = $this->formModeManager
->getFormModeMachineName($route_match
->getRouteObject()
->getOption('parameters')['form_mode']['id']);
$operation = empty($form_mode_id) ? 'register' : 'edit_' . $form_mode_id;
if ($entity instanceof EntityInterface) {
return $this
->getForm($entity, $operation);
}
}
public function pageTitle(RouteMatchInterface $route_match, $operation) {
$form_mode_label = $route_match
->getRouteObject()
->getOption('parameters')['form_mode']['label'];
return $this
->t('@op @name as @form_mode_label', [
'@name' => $this
->t('User'),
'@form_mode_label' => $form_mode_label,
'@op' => $operation,
]);
}
public function addPageTitle(RouteMatchInterface $route_match) {
return $this
->pageTitle($route_match, $this
->t('Create'));
}
public function editPageTitle(RouteMatchInterface $route_match) {
return $this
->pageTitle($route_match, $this
->t('Edit'));
}
protected function getEntityTypeFromRouteMatch(RouteMatchInterface $route_match) {
$parametters = parent::getEntityTypeFromRouteMatch($route_match);
$form_mode = $this->formModeManager
->getFormModeMachineName($route_match
->getRouteObject()
->getOption('parameters')['form_mode']['id']);
$form_mode_definition = $this->formModeManager
->getActiveDisplays($parametters['entity_type_id']);
$parametters['form_mode'] = $form_mode_definition[$form_mode];
return $parametters;
}
}