Předávání parametrů komponentě
- DNDforever
- Člen | 16
Zdarec,
pošlu si do latte nějaká data a pak chci aby se nějaká data poslala do komponenty… Kde je zakopán pes?
public function renderEditRecord($id){
$this->template->values = $this->database->query('SELECT * FROM `users` WHERE `ID` = ?', $id);
}
Latte:
<table n:foreach="$values as $value">
<tr><td>ID: {$value->ID}</td></tr>
<tr><td>Name: {$value->Name}</td></tr>
<tr><td>Surname: {$value->Surname}</td></tr>
<tr><td>Email: {$value->Email}</td></tr>
<tr><td>Age: {$value->Age}</td></tr>
<tr><td>{control editForm $value->ID}</td></tr>
</table>
a kámen úrazu je s komponentou editForm. Já bych tak nějak čekal, že jí můžu poslat data…
protected function createComponentEditForm($id) {
$form = new Form;
$form->addTextArea('Name', 'Zadejte Nové ID:', $id)
->addRule(Form::MIN_LENGTH, "ID musí mít alespoň dva znaky", 2)
->addRUle(Form::MAX_LENGTH, "ID může mít maximálně patnáct znaků", 15);
$form->addSubmit('Edit', 'Editovat')
->onClick[] = callback($this, 'EditForm');
return $form;
}
a dále… Můžu nějak rovnou v presenteru předat data (globální proměnnou) do controlleru? Přímo v metodě renderEditRecord($id) že bych si to ID uložil do $this->ID a pak ho prost2 použil v komponentě? Mi to právě nefungovalo (nezná proměnnou), tak to zkouším přes šablonu ale něco mám špatně.
- johnnie
- Člen | 54
Ides nato zlym sposobom, vyskusaj sa inspirovat quickstarter guide, tuto je priklad prepisovania hodnot v formulari, odporucam nastudovat → https://doc.nette.org/…eating-posts
public function actionEdit($postId)
{
$post = $this->database->table('posts')->get($postId);
if (!$post) {
$this->error('Příspěvek nebyl nalezen');
}
$this['editForm']->setDefaults($post->toArray());
}
Editoval johnnie (5. 10. 2015 16:00)
- Azathoth
- Člen | 495
na posílání parametrů do komponent se používá multiplier https://doc.nette.org/…n/multiplier