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_FILE_SIZE
private
int
MAX_FILE_SIZE
= 5 * 1024 * 1024
MAX_FILES
Upload limits: 5 files of 5 MB each.
private
int
MAX_FILES
= 5
Properties
$container
public
Container
$container
Attributes
- #[Inject]
$routerDispatcher
public
RouterDispatcher
$routerDispatcher
$translator
public
ITranslator
$translator
Tags
$appContext
protected
AppContext
$appContext
$componentParameters
protected
array<string, mixed>
$componentParameters
= []
component parameters set by setComponentParameter()
$currencyContext
protected
CurrencyContext|null
$currencyContext
= NULL
$deviceDetector
protected
DeviceDetector|null
$deviceDetector
= NULL
$languageContext
protected
LanguageContext|null
$languageContext
= NULL
$localizationContext
protected
LocalizationContext|null
$localizationContext
= NULL
$settingContext
protected
SettingContext
$settingContext
$themeContext
protected
ThemeContext|null
$themeContext
= NULL
$translatorDomain
protected
string|null
$translatorDomain
= 'front.eshop.components.complaintForm'
$complaintManager read-only
private
ComplaintManager
$complaintManager
$customer
private
array<string, mixed>
$customer
= []
$orderId
private
int
$orderId
= 0
$prefillItems
private
array<int, array<string, mixed>>
$prefillItems
= []
$solutions
private
array<int, array{id: int, name: string}>
$solutions
= []
$uploaderDropzoneFactory read-only
private
UploaderDropzoneFactory
$uploaderDropzoneFactory
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>
__construct()
public
__construct(ComplaintManager $complaintManager, UploaderDropzoneFactory $uploaderDropzoneFactory) : mixed
Parameters
- $complaintManager : ComplaintManager
- $uploaderDropzoneFactory : UploaderDropzoneFactory
createComponent()
public
createComponent(string $name) : IComponent|null
Parameters
- $name : string
Return values
IComponent|nullgetAppContext()
public
getAppContext() : AppContext
Return values
AppContextgetComponentParameter()
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
ContainergetCurrencyContext()
public
getCurrencyContext() : CurrencyContext|null
Return values
CurrencyContext|nullgetLanguageContext()
public
getLanguageContext() : LanguageContext|null
Return values
LanguageContext|nullgetLocalizationContext()
public
getLocalizationContext() : LocalizationContext|null
Return values
LocalizationContext|nullgetOrderId()
public
getOrderId() : int
Return values
intgetRouterDispatcher()
public
getRouterDispatcher() : RouterDispatcher
Return values
RouterDispatchergetSettingContext()
public
getSettingContext() : SettingContext
Return values
SettingContextgetSettings()
public
getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>getThemeContext()
public
getThemeContext() : ThemeContext|null
Return values
ThemeContext|nullhasServiceByType()
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
Return values
boolinitializeAllContexts()
public
initializeAllContexts() : void
injectDeviceDetector()
public
injectDeviceDetector(DeviceDetector $detector) : void
Parameters
- $detector : DeviceDetector
onCreate()
public
onCreate() : void
onError()
public
onError() : void
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'
setAppContext()
public
setAppContext(AppContext $appContext) : $this
Parameters
- $appContext : AppContext
Return values
$thissetComponentParameter()
Sets a component parameter.
public
setComponentParameter(string $name, mixed $value) : void
Parameters
- $name : string
- $value : mixed
setCurrencyContext()
public
setCurrencyContext(CurrencyContext|null $currencyContext) : $this
Parameters
- $currencyContext : CurrencyContext|null
Return values
$thissetLanguageContext()
public
setLanguageContext(LanguageContext|null $languageContext) : $this
Parameters
- $languageContext : LanguageContext|null
Return values
$thissetLocalizationContext()
public
setLocalizationContext(LocalizationContext|null $localizationContext) : $this
Parameters
- $localizationContext : LocalizationContext|null
Return values
$thissetOrderId()
public
setOrderId(int $orderId) : self
Parameters
- $orderId : int
Return values
selfsetPrefillData()
public
setPrefillData(array<string, mixed> $prefill) : self
Parameters
- $prefill : array<string, mixed>
Return values
selfsetSettingContext()
public
setSettingContext(SettingContext $settingContext) : $this
Parameters
- $settingContext : SettingContext
Return values
$thissetThemeContext()
public
setThemeContext(ThemeContext|null $themeContext) : $this
Parameters
- $themeContext : ThemeContext|null
Return values
$thissetup()
public
setup(BasePresenter|BasePresenter $presenter) : void
Parameters
- $presenter : BasePresenter|BasePresenter
setupAppContext()
public
setupAppContext(AppContext $appContext) : void
Parameters
- $appContext : AppContext
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
Return values
TcreateComponentForm()
protected
createComponentForm() : Form
Return values
FormcreateComponentUploader()
protected
createComponentUploader() : UploaderDropzone
Return values
UploaderDropzonefrontPresenter()
Returns the front presenter the component is attached to (null outside the front end or when detached).
protected
frontPresenter() : BasePresenter|null
Return values
BasePresenter|nullgetTranslator()
protected
getTranslator() : ITranslator
Return values
ITranslatorsetTemplateFile()
protected
setTemplateFile(string $dir, string $filename) : void
Parameters
- $dir : string
- $filename : string
setTranslator()
protected
setTranslator(ITranslator $translator) : self
Parameters
- $translator : ITranslator
Return values
selfaddItemFields()
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|nullcreateStandardComponent()
Creates a standard component (not a multiplier).
private
createStandardComponent(string $name) : IComponent|null
Parameters
- $name : string
Return values
IComponent|nullerrorMessageKey()
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
stringinitUploader()
private
initUploader() : void