CoolCMS API

ComplaintForm extends BaseComponent
in package
uses FormTrait

Renders the "complain about goods" form: a single page with a redirect after submit.

Holds no front entity: the server in the Api builds the complaint from the order snapshot, and the component keeps only data from ComplaintManager::prefill() (items with remaining quantity, code list of preferred solutions, contact snapshot for display).

One piece per row: each order item has a checkbox and a quantity select from 1 to the remaining quantity. Items with nothing remaining are shown in the template as already complained about and are not added to the form at all (no fields to tamper with).

Limits are self::MAX_FILES files of self::MAX_FILE_SIZE bytes each. They are own constants mirroring ComplaintFileTrait::MAX_FILES / MAX_FILE_SIZE in the Api, which the front end must not reach across layers, so both must be changed together; AttachmentFilePolicy has no count or size limit. Only its ALLOWED_EXTENSIONS is shared, as the App\Core\Security\Upload policy the front end may use like the Api.

Table of Contents

Constants

MAX_FILE_SIZE  : int = 5 * 1024 * 1024
MAX_FILES  : int = 5
Upload limits: 5 files of 5 MB each.

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$translator  : ITranslator
$appContext  : AppContext
$componentParameters  : array<string, mixed>
$currencyContext  : CurrencyContext|null
$deviceDetector  : DeviceDetector|null
$languageContext  : LanguageContext|null
$localizationContext  : LocalizationContext|null
$settingContext  : SettingContext
$themeContext  : ThemeContext|null
$translatorDomain  : string|null
$complaintManager  : ComplaintManager
$customer  : array<string, mixed>
$orderId  : int
$prefillItems  : array<int, array<string, mixed>>
$solutions  : array<int, array{id: int, name: string}>
$uploaderDropzoneFactory  : UploaderDropzoneFactory

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
createComponent()  : IComponent|null
getAppContext()  : AppContext
getComponentParameter()  : mixed
Returns a component parameter, or null when it is not set.
getContainer()  : Container
getCurrencyContext()  : CurrencyContext|null
getLanguageContext()  : LanguageContext|null
getLocalizationContext()  : LocalizationContext|null
getOrderId()  : int
getRouterDispatcher()  : RouterDispatcher
getSettingContext()  : SettingContext
getSettings()  : array<int, array<string, mixed>>
getThemeContext()  : ThemeContext|null
hasServiceByType()  : bool
Returns whether the container has a service of the given type.
initializeAllContexts()  : void
injectDeviceDetector()  : void
onCreate()  : void
onError()  : void
onSuccess()  : void
Handles a valid submit and creates the complaint through the Api.
render()  : void
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setOrderId()  : self
setPrefillData()  : self
setSettingContext()  : $this
setThemeContext()  : $this
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
createComponentForm()  : Form
createComponentUploader()  : UploaderDropzone
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTranslator()  : ITranslator
setTemplateFile()  : void
setTranslator()  : self
addItemFields()  : void
Adds one row per item: a checkbox plus a quantity select from 1 to the remaining quantity, only for items with something remaining.
addSolutionField()  : void
createMultiplierComponent()  : Multiplier<string|int, IComponent>
Creates a multiplier for the component.
createNewComponentInstance()  : IComponent|null
Creates a new component instance without adding it to the presenter; used by the multiplier.
createStandardComponent()  : IComponent|null
Creates a standard component (not a multiplier).
errorMessageKey()  : string
Maps the Api `errorCode` to a message key; an unknown code gets the generic message.
initUploader()  : void

Constants

MAX_FILES

Upload limits: 5 files of 5 MB each.

private int MAX_FILES = 5

Properties

$componentParameters

protected array<string, mixed> $componentParameters = []

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'front.eshop.components.complaintForm'

$prefillItems

private array<int, array<string, mixed>> $prefillItems = []

$solutions

private array<int, array{id: int, name: string}> $solutions = []

Methods

__call()

Dispatches `renderXyz()` to `render('Xyz', ...$args)`.

public __call(string $name, array<string|int, mixed> $args) : mixed

Called only when the component has no renderXyz() method of its own.

Parameters
$name : string
$args : array<string|int, mixed>

createComponent()

public createComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

getComponentParameter()

Returns a component parameter, or null when it is not set.

public getComponentParameter(string $name) : mixed
Parameters
$name : string

getContainer()

public getContainer() : Container
Return values
Container

getSettings()

public getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

hasServiceByType()

Returns whether the container has a service of the given type.

public hasServiceByType(string $className) : bool

The name is composed dynamically (module plus component), so class_exists() runs first, and a true result guarantees a valid type.

Parameters
$className : string
Tags
phpstan-assert-if-true

class-string $className

Return values
bool

onSuccess()

Handles a valid submit and creates the complaint through the Api.

public onSuccess(Form $form, ArrayHash $values) : void

IMPORTANT: the parameter must be typed ArrayHash, not mixed. Nette\Forms\Form::invokeHandlers() reads the declared type of the second handler parameter by reflection and passes it as $returnType to getValues(), which then calls new ReflectionClass($returnType); mixed crashes at runtime with a ReflectionException, although the Form::$onSuccess PHPDoc says callable(Form, mixed).

Parameters
$form : Form
$values : ArrayHash

render()

public render([string $style = 'Style_1' ]) : void
Parameters
$style : string = 'Style_1'

setComponentParameter()

Sets a component parameter.

public setComponentParameter(string $name, mixed $value) : void
Parameters
$name : string
$value : mixed

setOrderId()

public setOrderId(int $orderId) : self
Parameters
$orderId : int
Return values
self

setPrefillData()

public setPrefillData(array<string, mixed> $prefill) : self
Parameters
$prefill : array<string, mixed>
Return values
self

typedComponent()

Returns a subcomponent with a verified type.

public typedComponent(string $name, T> $type) : T

Use it instead of an inline @var above $this['x'] (which does not narrow the type) and instead of the generic IComponent that $this['x'] returns. See Form::typedComponent().

Parameters
$name : string
$type : T>
Tags
template
Return values
T

frontPresenter()

Returns the front presenter the component is attached to (null outside the front end or when detached).

protected frontPresenter() : BasePresenter|null
Return values
BasePresenter|null

getTranslator()

protected getTranslator() : ITranslator
Return values
ITranslator

setTemplateFile()

protected setTemplateFile(string $dir, string $filename) : void
Parameters
$dir : string
$filename : string

setTranslator()

protected setTranslator(ITranslator $translator) : self
Parameters
$translator : ITranslator
Return values
self

addItemFields()

Adds one row per item: a checkbox plus a quantity select from 1 to the remaining quantity, only for items with something remaining.

private addItemFields(Form $form) : void
Parameters
$form : Form

addSolutionField()

private addSolutionField(Form $form) : void
Parameters
$form : Form

createMultiplierComponent()

Creates a multiplier for the component.

private createMultiplierComponent(string $name) : Multiplier<string|int, IComponent>
Parameters
$name : string
Return values
Multiplier<string|int, IComponent>

createNewComponentInstance()

Creates a new component instance without adding it to the presenter; used by the multiplier.

private createNewComponentInstance(string $baseName[, int|string|null $uniqueKey = null ]) : IComponent|null
Parameters
$baseName : string
$uniqueKey : int|string|null = null
Return values
IComponent|null

createStandardComponent()

Creates a standard component (not a multiplier).

private createStandardComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

errorMessageKey()

Maps the Api `errorCode` to a message key; an unknown code gets the generic message.

private errorMessageKey(string|null $errorCode) : string
Parameters
$errorCode : string|null
Return values
string
On this page

Search results