FormSlugAjaxController extends AbstractFormEngineAjaxController
Read onlyYes
Handle FormEngine AJAX calls for Slug validation and sanitization
This class is a specific Backend controller implementation and is not considered part of the Public TYPO3 API.
Attributes
- #[AsController]
Table of Contents
Methods
- __construct() : mixed
- suggestAction() : ResponseInterface
- Validates a given slug against the site and give a suggestion when it's already in use
- addJavaScriptModulesToJavaScriptItems() : void
- checkRequest() : bool
- getLabelsFromLocalizationFile() : array<string|int, mixed>
- Parse a language file and get a label/value array from it.
- getLanguageService() : LanguageService|null
- getRelativePathToStylesheetFile() : string
- Resolve a CSS file position, possibly prefixed with 'EXT:'
Methods
__construct()
public
__construct(Context $context, HashService $hashService) : mixed
Parameters
- $context : Context
- $hashService : HashService
suggestAction()
Validates a given slug against the site and give a suggestion when it's already in use
public
suggestAction(ServerRequestInterface $request) : ResponseInterface
For new records this will look like this:
- If "slug" field is empty, take the other fields, and generate the slug based on the sent fields.
- JS: adapt the "placeholder" value only, as on save the field will be filled with the value via DataHandler
- If "slug" field is not empty (= "unlocked" and manually typed in)
- sanitize the slug
- If 'uniqueInSite' is set check if it's unique for the site
- If not unique propose another slug and return this with the flag hasConflicts = true
- If 'uniqueInPid' is set check if it's unique for the pid
- If not unique propose another slug and return this with the flag hasConflicts = true
- If 'uniqueInSite' is set check if it's unique for the site
For existing records:
- sanitize the slug
- If 'uniqueInSite' is set check if it's unique for the site
- If not unique propose another slug and return this with the flag hasConflicts = true
- If 'uniqueInPid' is set check if it's unique for the pid
- If not unique propose another slug and return this with the flag hasConflicts = true
- If the slug has changed from the existing database record (@todo)
- Show a message that the old URL will stop working (possibly add a redirect via checkbox)
- If the page has subpages, show a warning that the subpages WILL NOT BE MODIFIED and keep the OLD url
- If 'uniqueInSite' is set check if it's unique for the site
Parameters
- $request : ServerRequestInterface
Tags
Return values
ResponseInterfaceaddJavaScriptModulesToJavaScriptItems()
protected
addJavaScriptModulesToJavaScriptItems(array<string|int, mixed> $modules, JavaScriptItems $items) : void
Parameters
- $modules : array<string|int, mixed>
- $items : JavaScriptItems
checkRequest()
protected
checkRequest(ServerRequestInterface $request) : bool
Parameters
- $request : ServerRequestInterface
Tags
Return values
boolgetLabelsFromLocalizationFile()
Parse a language file and get a label/value array from it.
protected
getLabelsFromLocalizationFile(string $file) : array<string|int, mixed>
Parameters
- $file : string
-
EXT:path/to/file
Return values
array<string|int, mixed> —Label/value array
getLanguageService()
protected
getLanguageService() : LanguageService|null
Return values
LanguageService|nullgetRelativePathToStylesheetFile()
Resolve a CSS file position, possibly prefixed with 'EXT:'
protected
getRelativePathToStylesheetFile(string $stylesheetFile) : string
Parameters
- $stylesheetFile : string
-
Given file, possibly prefixed with EXT:
Return values
string —Web root relative position to file