, state: array, errors: array} */ public function toTemplateVars(): array { return [ 'action' => $this->action(), 'submit_label' => $this->submitLabel(), 'items' => $this->items(), 'state' => $this->state->getParams(), 'errors' => $this->state->getErrors(), ]; } abstract public function pageTitle(): string; abstract public function redirectUrl(): string; protected function action(): ?string { return null; } abstract protected function submitLabel(): string; /** * @return list */ abstract protected function items(): array; /** * @return array */ public function getRenderContext(): array { return []; } abstract public function submit(): void; }