Parameter komponenty po odoslani formularu

vladimir.biro
Člen | 163
+
0
-

Ahojte. Prosim Vas, mam takyto problem:

	/** Component - Revision */
	protected function createComponentRevision()
	{
		return new Multiplier(function ($id) {
			$revision = $this->revisionList[$id];
			$control = $this->revisionControlFactory->create($revision);
			return $control;

		});
	}

Na webe mam opakujucu sa komponentu a teda ju mam pridanu cez Multiplier.
Predavam si don premennu $id, co funguje ako ma. {control revision-$k}
V Multiplieri tuto premennu nejako spracovavam, resp ju pouzivam na vytiahnutie dat z pola a tieto data potom posielam ako parameter funkcie create.

/**
 * Interface IRevisionControlFactory
 * @package App\Components
 */
interface IRevisionControlFactory
{
	/** @return RevisionControl */
	function create($revision);
}

Cez konstruktor tuto premennu ukladam do parametra triesdy:

private $revision;

public function __construct($revision, Orm $orm, UserData $userData, FormFactory $factory)
	{
		parent::__construct();
		$this->revision = $revision;
		$this->orm = $orm;
		$this->factory = $factory;
		$this->userData = $userData;
	}

Teraz mam obsah premennej $revision v $this->revision.
Toto v pohode funguje.

Nasledne mam v komponente formular:

/**
	 * Form
	 * @return Form
	 */
	protected function createComponentForm()
	{
		$form = $this->factory->create();
		$form->getElementPrototype()->class('ajax');

		/** Form */
		$form->addTextArea('text', '...');
		$form->addSubmit('send', 'Uložiť');

		$form->onSuccess[] = [$this, 'processForm'];
		return $form;
	}


	public function processForm(Form $form, $values)
	{
		// ... <-- Spracovanie formualru

		Debugger::barDump($this->revision);
	}

A tu je problem, ze po odoslani formularu mam vo funkcii processForm uz parameter $this->revision = null :(

Nemali by sa parametre v triedach prenasat perzistentne?
Alebo robim ja nieco zle? Lebo by som prisahal, ze mi to takto fungovalo a teraz nie a nie…

Dakujem za rady.

David Matějka
Moderator | 6445
+
+1
-

kde plnis to $this->revisionList? pokud to delas v nejake render metode, tak po odeslani formulare, ktery se zpracovava driv, to tam nebude

vladimir.biro
Člen | 163
+
0
-

David Matějka napsal(a):

kde plnis to $this->revisionList? pokud to delas v nejake render metode, tak po odeslani formulare, ktery se zpracovava driv, to tam nebude

Presne tak to je, ako hovoris. Asi 10 sekund po tom, ako som napisal moj prispevok mi to trklo. Prehodil som to z renderDefault do actionDefault a uz to samozrejme slapalo. Prechadzal som si starsie projekty a vsade mi to fungovalo. Nechapem, ze ma nenapadlo pozriet na to najlogickejsie miesto, cize tam, kde sa data generuju :/

V kazdom pripade dakujem za reakciu.

Editoval vladimir.biro (26. 1. 2018 18:45)