class Serializer
Same name in this branch
- 11.x core/modules/jsonapi/src/Serializer/Serializer.php \Drupal\jsonapi\Serializer\Serializer
Same name in other branches
- 9 core/modules/jsonapi/src/Serializer/Serializer.php \Drupal\jsonapi\Serializer\Serializer
- 9 core/modules/rest/src/Plugin/views/style/Serializer.php \Drupal\rest\Plugin\views\style\Serializer
- 8.9.x core/modules/jsonapi/src/Serializer/Serializer.php \Drupal\jsonapi\Serializer\Serializer
- 8.9.x core/modules/rest/src/Plugin/views/style/Serializer.php \Drupal\rest\Plugin\views\style\Serializer
- 10 core/modules/jsonapi/src/Serializer/Serializer.php \Drupal\jsonapi\Serializer\Serializer
- 10 core/modules/rest/src/Plugin/views/style/Serializer.php \Drupal\rest\Plugin\views\style\Serializer
The style plugin for serialized output formats.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\views\Plugin\views\style\StylePluginBase extends \Drupal\views\Plugin\views\PluginBase
- class \Drupal\rest\Plugin\views\style\Serializer extends \Drupal\views\Plugin\views\style\StylePluginBase implements \Drupal\Core\Cache\CacheableDependencyInterface
- class \Drupal\views\Plugin\views\style\StylePluginBase extends \Drupal\views\Plugin\views\PluginBase
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of Serializer
Related topics
1 file declares its use of Serializer
- SerializerTest.php in core/
modules/ rest/ tests/ src/ Unit/ Plugin/ views/ style/ SerializerTest.php
29 string references to 'Serializer'
- AuthenticationProviderPassTest::testEncoders in core/
tests/ Drupal/ Tests/ Core/ DependencyInjection/ Compiler/ AuthenticationProviderPassTest.php - @covers ::process
- CollectRoutesTest::setUp in core/
modules/ rest/ tests/ src/ Unit/ CollectRoutesTest.php - EndOfTransactionQueriesTest::register in core/
tests/ Drupal/ KernelTests/ Core/ Cache/ EndOfTransactionQueriesTest.php - Registers test-specific services.
- EntitySerializationTest::setUp in core/
modules/ serialization/ tests/ src/ Kernel/ EntitySerializationTest.php - FieldItemSerializationTest::setUp in core/
modules/ serialization/ tests/ src/ Kernel/ FieldItemSerializationTest.php
File
-
core/
modules/ rest/ src/ Plugin/ views/ style/ Serializer.php, line 19
Namespace
Drupal\rest\Plugin\views\styleView source
class Serializer extends StylePluginBase implements CacheableDependencyInterface {
/**
* {@inheritdoc}
*/
protected $usesRowPlugin = TRUE;
/**
* {@inheritdoc}
*/
protected $usesGrouping = FALSE;
/**
* The serializer which serializes the views result.
*
* @var \Symfony\Component\Serializer\Serializer
*/
protected $serializer;
/**
* The available serialization formats.
*
* @var array
*/
protected $formats = [];
/**
* The serialization format providers, keyed by format.
*
* @var string[]
*/
protected $formatProviders;
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container->get('serializer'), $container->getParameter('serializer.formats'), $container->getParameter('serializer.format_providers'));
}
/**
* Constructs a Plugin object.
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, SerializerInterface $serializer, array $serializer_formats, array $serializer_format_providers) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->definition = $plugin_definition + $configuration;
$this->serializer = $serializer;
$this->formats = $serializer_formats;
$this->formatProviders = $serializer_format_providers;
}
/**
* {@inheritdoc}
*/
protected function defineOptions() {
$options = parent::defineOptions();
$options['formats'] = [
'default' => [],
];
return $options;
}
/**
* {@inheritdoc}
*/
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$form['formats'] = [
'#type' => 'checkboxes',
'#title' => $this->t('Accepted request formats'),
'#description' => $this->t('Request formats that will be allowed in responses. If none are selected all formats will be allowed.'),
'#options' => $this->getFormatOptions(),
'#default_value' => $this->options['formats'],
];
}
/**
* {@inheritdoc}
*/
public function submitOptionsForm(&$form, FormStateInterface $form_state) {
parent::submitOptionsForm($form, $form_state);
$formats = $form_state->getValue([
'style_options',
'formats',
]);
$form_state->setValue([
'style_options',
'formats',
], array_filter($formats));
}
/**
* {@inheritdoc}
*/
public function render() {
$rows = [];
// If the Data Entity row plugin is used, this will be an array of entities
// which will pass through Serializer to one of the registered Normalizers,
// which will transform it to arrays/scalars. If the Data field row plugin
// is used, $rows will not contain objects and will pass directly to the
// Encoder.
foreach ($this->view->result as $row_index => $row) {
$this->view->row_index = $row_index;
$rows[] = $this->view->rowPlugin
->render($row);
}
unset($this->view->row_index);
// Get the content type configured in the display or fallback to the
// default.
if (empty($this->view->live_preview)) {
$content_type = $this->displayHandler
->getContentType();
}
else {
$content_type = !empty($this->options['formats']) ? reset($this->options['formats']) : 'json';
}
return $this->serializer
->serialize($rows, $content_type, [
'views_style_plugin' => $this,
]);
}
/**
* Gets a list of all available formats that can be requested.
*
* This will return the configured formats, or all formats if none have been
* selected.
*
* @return array
* An array of formats.
*/
public function getFormats() {
return $this->options['formats'];
}
/**
* {@inheritdoc}
*/
public function getCacheMaxAge() {
return Cache::PERMANENT;
}
/**
* {@inheritdoc}
*/
public function getCacheContexts() {
return [
'request_format',
];
}
/**
* {@inheritdoc}
*/
public function getCacheTags() {
return [];
}
/**
* {@inheritdoc}
*/
public function calculateDependencies() {
$dependencies = parent::calculateDependencies();
$formats = $this->getFormats();
$providers = array_intersect_key($this->formatProviders, array_flip($formats));
// The plugin always uses services from the serialization module.
$providers[] = 'serialization';
$dependencies += [
'module' => [],
];
$dependencies['module'] = array_merge($dependencies['module'], $providers);
return $dependencies;
}
/**
* Returns an array of format options.
*
* @return string[]
* An array of format options. Both key and value are the same.
*/
protected function getFormatOptions() {
$formats = array_keys($this->formatProviders);
return array_combine($formats, $formats);
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DerivativeInspectionInterface::getBaseId | public | function | Gets the base_plugin_id of the plugin instance. | 1 | |
DerivativeInspectionInterface::getDerivativeId | public | function | Gets the derivative_id of the plugin instance. | 1 | |
PluginBase::$definition | public | property | Plugins' definition. | ||
PluginBase::$displayHandler | public | property | The display object this plugin is for. | ||
PluginBase::$options | public | property | Options for this plugin will be held here. | ||
PluginBase::$position | public | property | The handler position. | ||
PluginBase::$renderer | protected | property | Stores the render API renderer. | 3 | |
PluginBase::$view | public | property | The top object of a view. | 1 | |
PluginBase::doFilterByDefinedOptions | protected | function | Do the work to filter out stored options depending on the defined options. | ||
PluginBase::filterByDefinedOptions | public | function | Filter out stored options depending on the defined options. | Overrides ViewsPluginInterface::filterByDefinedOptions | |
PluginBase::getAvailableGlobalTokens | public | function | Returns an array of available token replacements. | Overrides ViewsPluginInterface::getAvailableGlobalTokens | |
PluginBase::getProvider | public | function | Returns the plugin provider. | Overrides ViewsPluginInterface::getProvider | |
PluginBase::getRenderer | protected | function | Returns the render API renderer. | 1 | |
PluginBase::globalTokenForm | public | function | Adds elements for available core tokens to a form. | Overrides ViewsPluginInterface::globalTokenForm | |
PluginBase::globalTokenReplace | public | function | Returns a string with any core tokens replaced. | Overrides ViewsPluginInterface::globalTokenReplace | |
PluginBase::INCLUDE_ENTITY | constant | Include entity row languages when listing languages. | |||
PluginBase::INCLUDE_NEGOTIATED | constant | Include negotiated languages when listing languages. | |||
PluginBase::listLanguages | protected | function | Makes an array of languages, optionally including special languages. | ||
PluginBase::pluginTitle | public | function | Return the human readable name of the display. | Overrides ViewsPluginInterface::pluginTitle | |
PluginBase::preRenderAddFieldsetMarkup | public static | function | Moves form elements into fieldsets for presentation purposes. | Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup | |
PluginBase::preRenderFlattenData | public static | function | Flattens the structure of form elements. | Overrides ViewsPluginInterface::preRenderFlattenData | |
PluginBase::queryLanguageSubstitutions | public static | function | Returns substitutions for Views queries for languages. | ||
PluginBase::setOptionDefaults | protected | function | Fills up the options of the plugin with defaults. | ||
PluginBase::summaryTitle | public | function | Returns the summary of the settings in the display. | Overrides ViewsPluginInterface::summaryTitle | 6 |
PluginBase::themeFunctions | public | function | Provide a full list of possible theme templates used by this style. | Overrides ViewsPluginInterface::themeFunctions | 1 |
PluginBase::unpackOptions | public | function | Unpacks options over our existing defaults. | Overrides ViewsPluginInterface::unpackOptions | |
PluginBase::usesOptions | public | function | Returns the usesOptions property. | Overrides ViewsPluginInterface::usesOptions | 8 |
PluginBase::viewsTokenReplace | protected | function | Replaces Views' tokens in a given string. | 1 | |
PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT | constant | Query string to indicate the site default language. | |||
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin ID of the plugin instance. | 2 | |
Serializer::$formatProviders | protected | property | The serialization format providers, keyed by format. | ||
Serializer::$formats | protected | property | The available serialization formats. | ||
Serializer::$serializer | protected | property | The serializer which serializes the views result. | ||
Serializer::$usesGrouping | protected | property | Does the style plugin support grouping of rows. | Overrides StylePluginBase::$usesGrouping | |
Serializer::$usesRowPlugin | protected | property | Whether or not this style uses a row plugin. | Overrides StylePluginBase::$usesRowPlugin | |
Serializer::buildOptionsForm | public | function | Provide a form to edit options for this plugin. | Overrides StylePluginBase::buildOptionsForm | |
Serializer::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides PluginBase::calculateDependencies | |
Serializer::create | public static | function | Creates an instance of the plugin. | Overrides PluginBase::create | |
Serializer::defineOptions | protected | function | Information about options for all kinds of purposes will be held here. | Overrides StylePluginBase::defineOptions | |
Serializer::getCacheContexts | public | function | The cache contexts associated with this object. | Overrides CacheableDependencyInterface::getCacheContexts | |
Serializer::getCacheMaxAge | public | function | The maximum age for which this object may be cached. | Overrides CacheableDependencyInterface::getCacheMaxAge | |
Serializer::getCacheTags | public | function | The cache tags associated with this object. | Overrides CacheableDependencyInterface::getCacheTags | |
Serializer::getFormatOptions | protected | function | Returns an array of format options. | ||
Serializer::getFormats | public | function | Gets a list of all available formats that can be requested. | ||
Serializer::render | public | function | Render the display in this style. | Overrides StylePluginBase::render | |
Serializer::submitOptionsForm | public | function | Handle any special handling on the validate form. | Overrides PluginBase::submitOptionsForm | |
Serializer::__construct | public | function | Constructs a Plugin object. | Overrides PluginBase::__construct | |
StylePluginBase::$defaultFieldLabels | protected | property | Should field labels be enabled by default. | 1 | |
StylePluginBase::$groupingTheme | protected | property | The theme function used to render the grouping set. | ||
StylePluginBase::$rendered_fields | protected | property | |||
StylePluginBase::$render_tokens | public | property | |||
StylePluginBase::$rowTokens | protected | property | Store all available tokens row rows. | ||
StylePluginBase::$usesFields | protected | property | Does the style plugin for itself support to add fields to its output. | 3 | |
StylePluginBase::$usesOptions | protected | property | Denotes whether the plugin has an additional options form. | Overrides PluginBase::$usesOptions | |
StylePluginBase::$usesRowClass | protected | property | Does the style plugin support custom css class for the rows. | 3 | |
StylePluginBase::buildSort | public | function | Determines if the style handler should interfere with sorts. | 1 | |
StylePluginBase::buildSortPost | public | function | Allows the view builder to build a second set of sorts. | 1 | |
StylePluginBase::defaultFieldLabels | public | function | Return TRUE if this style enables field labels by default. | 1 | |
StylePluginBase::destroy | public | function | Clears a plugin. | Overrides PluginBase::destroy | |
StylePluginBase::elementPreRenderRow | public | function | #pre_render callback for view row field rendering. | ||
StylePluginBase::evenEmpty | public | function | Determines if the style plugin is rendered even if the view is empty. | 2 | |
StylePluginBase::getField | public | function | Gets a rendered field. | ||
StylePluginBase::getFieldValue | public | function | Get the raw field value. | ||
StylePluginBase::getRowClass | public | function | Return the token replaced row class for the specified row. | ||
StylePluginBase::init | public | function | Overrides \Drupal\views\Plugin\views\PluginBase::init(). | Overrides PluginBase::init | |
StylePluginBase::preRender | public | function | Allow the style to do stuff before each row is rendered. | ||
StylePluginBase::query | public | function | Add anything to the query that we might need to. | Overrides PluginBase::query | 1 |
StylePluginBase::renderFields | protected | function | Renders all of the fields for a given style and store them on the object. | ||
StylePluginBase::renderGrouping | public | function | Group records as needed for rendering. | ||
StylePluginBase::renderGroupingSets | public | function | Render the grouping sets. | ||
StylePluginBase::renderRowGroup | protected | function | Renders a group of rows of the grouped view. | ||
StylePluginBase::tokenizeValue | public | function | Take a value and apply token replacement logic to it. | ||
StylePluginBase::trustedCallbacks | public static | function | Lists the trusted callbacks provided by the implementing class. | Overrides PluginBase::trustedCallbacks | |
StylePluginBase::usesFields | public | function | Return TRUE if this style also uses fields. | 3 | |
StylePluginBase::usesGrouping | public | function | Returns the usesGrouping property. | 3 | |
StylePluginBase::usesRowClass | public | function | Returns the usesRowClass property. | 3 | |
StylePluginBase::usesRowPlugin | public | function | Returns the usesRowPlugin property. | 11 | |
StylePluginBase::usesTokens | public | function | Return TRUE if this style uses tokens. | ||
StylePluginBase::validate | public | function | Validate that the plugin is correct and can be saved. | Overrides PluginBase::validate | |
StylePluginBase::validateOptionsForm | public | function | Validate the options form. | Overrides PluginBase::validateOptionsForm | |
StylePluginBase::wizardSubmit | public | function | Alter the options of a display before they are added to the view. | 1 | |
TrustedCallbackInterface::THROW_EXCEPTION | constant | Untrusted callbacks throw exceptions. | |||
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.