Formulář v komponentě komponenty, nefunguje lokalní snippet

Wee93
Člen | 2
+
0
-

Ahoj,
řeším problém formuláře v komponentě který refrešne vše místo potřebného snippetu

v kostce:

Presenter → komponenta1 → komponenta2 | formulář

Presenter načte včechny data filtrované s proměnným @persistent a ty dále distribuuje

Presenter pomocí multiplieru generuje komponentu1 a vkládá do ní data, která se v presenteru načítají v startup() / actionDefault()
stejně tak komponenta1 generuje pomocí multiplieru komponenty2 a obdobně získává data v konstruktoru (služby i data si komponenty předávají v konstruktoru)

Presenter


    protected function createComponentGet() {
        return new Multiplier(function($id) {
            $this->data[$id]->requests = $this->subsidy->requests->find($this->data[$id]->id, null, null, null, $this->year, $this->select, $this->type)->fetchAssoc('id');
            $control  = new \iW\CMS\Admin\Subsidy\Applicants\Applicant($this->system, $this->extensions, $this->subsidy, $this->data[$id], $this->year, $this->select, $this->type);
            return $control;
        });
    }

Komponenta1


    protected function createComponentRequest() {
        return new UI\Multiplier(function($id) {

            $request = $this->applicant->requests[$id];

            $control = new Request($this->system, $this->extensions, $this->subsidy, $this->applicant, $request, $this->year);
            return $control;
        });
    }

Komponenta2


class Request extends UI\Control {

    use \Nette\SmartObject;

    private $animals;
    private $returned_step;

    public function __construct(
        public \iW\Model\System $system,
        public \iW\Model\Extensions $extensions,
        public \iW\Model\App\Subsidy $subsidy,
        private $applicant,
        private $request,
        private $year
    ) {}


    protected function createComponentQuantity() : Form {
        $form = new Form();

        $form->getElementPrototype()->class('ajax');

        $form->addText("count", "Počet")->setValue($this->request->count);
        $form->addSubmit("save", "Uložit");

        $form->onSubmit[] = [ $this, 'onQuantity'];
        return $form;
    }

    public function onQuantity(Form $form) {
        $values = $form->getValues();
        if ($values['count']) {

            $this->request->count = $values['count'];
            $this->subsidy->requests->set($this->request->id, [
                "count" => intval($values['count'])
            ]);
        }

        $this->redrawControl('check');
    }

když v Komponentě2 zavolám obyčejný handle, snippet, který obsahuje se v pořádku překreslí
avšak, když zavolám ajaxový submit v komponetě2 ajaxem se překreslí celý presenter se zachovanými @persistent

Vůbec nevím co s tím, už jedu pokus omyl prosím o jakoukoliv radu, jak validovat čistě ten snippet který se má překreslit.. chapal bych kdyby se to dělo i čistě u hadle a nemohl komponentu třeba najít, ale u něj to funguje bez problémů.

Děkuji moc za jakoukoliv pomoc

Wee93
Člen | 2
+
0
-

Problém vyřešen

Chyba byla úplně jinde, v @layout.latte jsem měl pouze a jen {snippet} .. {include} pro vnoření obsahu presenterů, změna na {snippetArea} to celé vyřešilo. :D