Jak na CRUD?

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

Takže již asi na pátý pokus začínám s Nette, vyřešila jsem připojení k db přes dibi, teď ale bojuji s úkolem v mém primitivnim testovacim příkladu jak udelat vlozeni zaznamu do db studovala jsem vzorovy Akrabat a jeste jiny kod a zjistila jsem , ze je to reseneé pomocí jakési komponenty. Netuším vůbec proč? Šlo by to to řešit i pomocí funkce adzaznam? Pak mi neni jasne, chtela bych mit vlozeni zaznamu uzivatele bez prihlaseni a také umožnit vložení záznamu i adminovi po přihlášení, jak navrhnou strukrturu kodu, abych nemusela 2× vypisovat totoéž jednou pro nepřihlášeného a taktéž pro přihlášeného admina.

Honza Marek
Člen | 1664
+
0
-

mardon napsal(a):

Takže již asi na pátý pokus začínám s Nette, vyřešila jsem připojení k db přes dibi, teď ale bojuji s úkolem v mém primitivnim testovacim příkladu jak udelat vlozeni zaznamu do db studovala jsem vzorovy Akrabat a jeste jiny kod a zjistila jsem , ze je to reseneé pomocí jakési komponenty.

Není jakási komponenta náhodou formulář?

Netuším vůbec proč? Šlo by to to řešit i pomocí funkce adzaznam?

Co to je funkce adzaznam a kde se má vyskytovat?

Pak mi neni jasne, chtela bych mit vlozeni zaznamu uzivatele bez prihlaseni a také umožnit vložení záznamu i adminovi po přihlášení, jak navrhnou strukrturu kodu, abych nemusela 2× vypisovat totoéž jednou pro nepřihlášeného a taktéž pro přihlášeného admina.

Jak se liší ty jejich „záznamy“? Co to vlastně je konkrétně ten záznam?

Jan Tvrdík
Nette guru | 2595
+
0
-

Honza Marek napsal(a): Co to je funkce adzaznam a kde se má vyskytovat?

Třeba to mělo být addZaznam.

pekelnik
Člen | 462
+
0
-

nemelo by se to jmenovat spise pridatRecord ? :D

mardon
Člen | 59
+
0
-

Takže vidím, že Vás mů dotaz hodně pobavil, takže zkusím se zeptat přesněji ve vzorovém Akrabatu je komponenta

/********************* component factories *********************/



	/**
	 * Album edit form component factory.
	 * @return mixed
	 */
	protected function createComponentAlbumForm()
	{
		$form = new AppForm;
		$form->addText('artist', 'Artist:')
			->addRule(Form::FILLED, 'Please enter an artist.');

		$form->addText('title', 'Title:')
			->addRule(Form::FILLED, 'Please enter a title.');


		$form->addSubmit('save', 'Save')->getControlPrototype()->class('default');
		$form->addSubmit('cancel', 'Cancel')->setValidationScope(NULL);
		$form->onSubmit[] = callback($this, 'albumFormSubmitted');


		$form->addProtection('Please submit this form again (security token has expired).');
		return $form;
	}

která se ( pokud to správně chápu) volá akcí:

public function renderAdd()
	{
		$this['albumForm']['save']->caption = 'Add';
	}

můj dotaz směroval k tomu proč se formulář tvoří pomocí createComponent a zda by ho šlo vytvořit i pomocí funkce?

Editoval mardon (23. 2. 2010 18:39)

Jan Tvrdík
Nette guru | 2595
+
0
-

mardon napsal(a):

můj dotaz směroval k tomu proč se formulář tvoří pomocí createComponent

Aby ho bylo možné vytvořit kdykoliv, kdy to bude potřeba a zároveň, aby ho bylo nutné tvořit pouze, když to bude potřeba. Prostě klasický lazy přístup.

zda by ho šlo vytvořit i pomocí funkce?

Nechápu. Jako globální funkcí mimo třídu? Proč? Ano, v Nette je (skoro) všechno možné :)

i.magine
Člen | 81
+
0
-

která se ( pokud to správně chápu) volá akcí:

public function renderAdd()
	{
		$this['albumForm']['save']->caption = 'Add';
	}

Touhle akcí se nevolá, jenom se při renderingu přenastavuje caption (popisek) u submit buttonu. Většinou se (ale akrabat jsem nezkoumal) takhle vytvořená komponenta volá až v šabloně, nějak takhle:

{widget albumForm}
mardon
Člen | 59
+
0
-

i.magine napsal(a):

která se ( pokud to správně chápu) volá akcí:

public function renderAdd()
	{
		$this['albumForm']['save']->caption = 'Add';
	}

Touhle akcí se nevolá, jenom se při renderingu přenastavuje caption (popisek) u submit buttonu. Většinou se (ale akrabat jsem nezkoumal) takhle vytvořená komponenta volá až v šabloně, nějak takhle:

{widget albumForm}

Děkuji za dovysvětlení to je důležitá informace,zase jsem se posunula kousek dále

despiq
Člen | 320
+
0
-

projdi si Nette\Application\Presenter pak by ti melo byt jasne co je render faze

Editoval despiq (1. 3. 2010 23:05)