Jak předávat parametry na uložení změn
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- tatyalien
- Člen | 239
Tak snad na delší dobu poslední otázečka.
Snažím se uložit změny ohledně uživatele do DB. Když jsem si pročítal
návod na TODO, tak tam je řešení přez handl…
Mě ale zajímá, když už mám „id“ uživatele získané v presenteru z továrničky:
<?php
protected function createComponentEditName($name)
{
/* získání dat o uživateli */
$user = NEnvironment::getUser();
$user_id = $user->getIdentity()->getId();
...
$form->onSubmit[] = array($this, 'editNameSubmitted');
}
public function editNameSubmitted($form)
{
/* pokud je vše vyplněno, pokusím se editovat uživatele */
try {
if($form['delete']->isSubmittedBy()) {
// vrátím se zpět na editaci
$this->redirect(":Admin:EditUser:default");
} else {
$values = $form->getValues();
// jak to sem napojit???
$this->redirect(':Admin:EditUser:save');
}
}
catch (NIOException $e) {
$form->addError($e->getMessage());
}
}
?>
Jak mohu ve zpracování formuláře použít toto id, tak abych ho předal pak do modelu akce update?
něcoj jako:
<?php
class UserModel extends BaseModel
{
public function edit($data, $id)
{
return dibi::query('UPDATE [users] SET', (array) $data, 'WHERE [id]=%i', $id);
}
...
?>
Nebo na to jdu úplně blbě?
Editoval tatyalien (13. 1. 2011 11:29)
- Jakub Lédl
- Člen | 55
Možná trochu overkill, ale taky by se dala vytvořit třída (např.)
UserEditForm
, která by dědila od
Nette\Application\AppForm
, handlery napsat přímo do ní a
uživatelské ID předávat do konstruktoru.
Editoval Jakub Lédl (13. 1. 2011 13:59)