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
+
0
-

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)

Foowie
Člen | 269
+
0
-

Například přidáním hidden fieldu do formuláře, nebo úplně stejně jako v továrničce získáš ID uživatele kterého edituješ. Pak vytvoříš objekt modelu a zavoláš metodu :)

Editoval Foowie (13. 1. 2011 11:52)

Jakub Lédl
Člen | 55
+
0
-

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)