Jak nastavit redirect z komponenty do presenteru

Allconius
Člen | 313
+
0
-

Ahoj,
našel jsem si příklad jak nastavit přesměrování z komponenty zde a vytvořil v komponentě:
PhonebookControl.php


    /** @var callable[] */
    public $onSuccess = [];

    public function seznamFormSucceeded(Form $form, $values)
    {
        $values = $form->getValues();
        $this->search = $this->dbManager->vyhledejKontakt($values->prijmeni);
        $this->onSuccess();
    }

v továrně mám:
PhonebookControlFactory.php

interface PhonebookControlFactory
{
    public function create(): PhonebookControl;
}

a v presenteru:

    protected function createComponentPhonebook(): PhonebookControl
    {
        return $this->phonebookControlFactory->onSuccess[] = function () {
            $this->redirect('Seznam:');
        };
    }

ale vypíše mi to deprecated na tom return v presenteru:

Creation of dynamic property App\Components\Contacts\PhonebookControlFactory@anonymous::$onSuccess is deprecated

Co tam mám špatně ?

Marek Znojil
Člen | 77
+
+3
-

Ahoj,
protože to definuješ do toho rozhraní. Tvoje metoda v prezenteru by měla vypadat takto:

    protected function createComponentPhonebook(): PhonebookControl
    {
        $control = $this->phonebookControlFactory->create();
        $control->onSuccess[] = function (): void{
            $this->redirect('Seznam:');
        };

        return $control;
    }
Allconius
Člen | 313
+
+1
-

Ahoj, funguje, díky moc :-)