View se @ vs render metoda

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

Zdravim

Mel bych dalsi FR. Pri psani CRUD se mi osvedcilo mit view „default“ pro vypis dat + mazani a pohledy „new“ a „edit“ pro vytvoreni/upraveni zaznamu. Asi kazdeho napadne, ze tam bude ten samy formular. Osobne v akci prenastavuji pohled na '@form' protoze sablona se jmenuje @form.phtml. Jenze zde je problem ze se nezavola metoda renderForm(). Nette zkousi existenci render@Form coz ani nejde. Proto pri kazdem update upravuji toto:

	protected static function formatRenderMethod($view)
	{
		$view = str_replace('@', '', $view);
		return 'render' . $view;
	}

Proste ten @ odmazni. Kuli bezpecnosti nechci mit form.phtml, protoze by to slo zavolat primo. Take chci urcite veci spojene s formularem delat v renderForm().

Myslite ze by to slo dat do Nette?

DIKY

Editoval phx (27. 9. 2010 21:58)

Filip Procházka
Moderator | 4668
+
0
-

a co ti vadí na?

public function actionSomething()
{
	$this->view = "form";
}
// ...
public function renderForm()
{
	$this->template->setFile(__DIR__ . '/../templates/@form.phtml');
}

určitě během 5ti minut vymyslíš jak to zautomatizovat :)

srigi
Nette Blogger | 558
+
0
-

Osobne riesim spolocny formular pre ADD/EDIT, tak ze componenta je ta ista a v action zmenim handler:

public function actionAddpage()
{
    $this['formPageProperties']->onSubmit[] = array($this, 'SubmittedPageAdd');
}

public function actionEditPage()
{
    $this['formPageProperties']->onSubmit[] = array($this, 'SubmittedPageEdit');
}

protected function createComponentFormPageProperties($name)
{
    $form = new AppForm($this, $name);
    $form->addText('name' . $lang['code'], 'Meno:')
    // ...
    $form->addSubmit('save', 'Uložiť');
}

public function SubmittedPageAdd(AppForm $form)
{
    // create new Page
    $blablabla = $form->values;
    // ...

    $this->flashMessage('Nová stránka bola úspešne vytvorená', 'info');
    $this->redirect('default'); // redirect to listing
}

public function SubmittedPageEdit(AppForm $form)
{
    // create new Page
    $blablabla = $form->values;
    // ...

    $this->flashMessage('Nastavenia stránky boli úspešne uložené', 'info');
    $this->redirect('default'); // redirect to listing
}
phx
Člen | 651
+
0
-

HosipLan napsal(a):

a co ti vadí na?

	$this->template->setFile(__DIR__ . '/../templates/@form.phtml');

Vidis to me nenapadlo, ale prijde mi to jako neco co by melo delat Nette.

Filip Procházka
Moderator | 4668
+
0
-

Nette nemůže umět úplně všechno, to by pak nebyla taková zábava :)

phx
Člen | 651
+
0
-

srigi

Zajimave. Ja osobne to mam takto:

  • actionNew() – vyplni default hodnoty – view = @form
  • actionEdit($id) – nacte z DB a vyplni hodnoty – view = @form
  • renderForm() – kosmetika pro sablonu – $isUpdate
  • metoda pro odeslani formulare – nacte, vyhodnoti, ulozi do objektu modelu a pak obj->save() – insert/update se stara model.