Jak předat parametr z presenteru do komponenty

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Phalanx
Člen | 310
+
0
-

Ahoj,

potřeboval bych trochu nasměrovat s komponentou od MetisFW pro PayPal.
https://github.com/…/en/index.md

V $_GET parametru si předávám id objednávky ?order_id=1111

V presenteru si generuju komponentu, ale nevím jak jí předat order_id – teda poprvé vím, že to můžu vytáhnout přes $this->getParameter(‚order_id‘), ale po volání checkout už v $_GET není.

<?php
public function createComponentPayPalpaymentButton(SimplePaymentOperationFactory $factory) {

	// tady chci nacist objednavku abych ji mohl dosadit do nasledne factory
	$order = ?;

    $operation = $factory->create($order->name, $order->price);
    $control = new PaymentControl($operation);
    return $control;
  }
?>

Navíc, odkazy jsou generovány natvrdo – parametry se nepřenáší pro checkout, return a cancel…
https://github.com/…tControl.php

Mohl by mi někdo prosím poradit jak si do té komponenty natáhnu objednávku a jak si nechám parametr v $_GET? Případně jiné možnosti. Všechny mé pokusy doposud selhaly, napadlo mě:

  1. použít persistentní parametr
  2. použít v presenteru $id_order s getter a setter, ale bohužel se pak přepisoval
  3. přepsat si PaymentControl

Ani jedna z těch možností mi ale buď nefungovala nebo by to vyžadovalo přepsat víc věcí.

Budu vděčný za každou radu.

iNviNho
Člen | 352
+
0
-

Ja by som tak z hlavy skusil cez getParameter id vytiahnut a predat ho cez konstruktor do komponenty, tam ho ulozit do nejakeho inputu napr addHidden a po odoslani tam bude :) ak nie, tak si pytaj data cez getHttpData z formu :)

David Matějka
Moderator | 6445
+
0
-

@Phalanx persistentni parametr by mel fungovat. jak si to pouzival? stejne tak by melo jit

public function actionDefault($order_id)
{

}

Tim, ze uvedes parametr v parametrech odpovidajici action/render funkce, tak se zachova pri odkazovani na this

Phalanx
Člen | 310
+
0
-

@DavidMatějka Díky Davide, opět jsi nezklamal a já se biju do hlavy.

<?php
	/** @var int @persistent */
	protected $id_order; // musi byt public
?>