3problemy

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
radvis
Začátečník | 110
+
0
-

Ahoj,

mám pár dotazu(problemu)

1)Potřeboval bych mít podadresář administrace a tam „nový“ index. Jak toho v nette docílím?

2)Chtěl bych mít v url domena.com/uzivatele/radvis.

3)Kdybych chtěl dělat edit např profilu jak vložím do inputu věci z db?

Díky.

grogy
Člen | 147
+
0
-

Ad 1) Pomocí modulů, a pak nastavíš routování ;)

Ad 2) Co myslíš tím radvis? – jestli uživatele tak pomocí prenseteru Uzivatele (ve Front části) a jako ID bude jeho nick

Ad 3) Vytáhneš záznam do pole a to pomocí metody… nevím přesně jak naplníš formulář :)

radvis
Začátečník | 110
+
0
-

grogy napsal(a):

Ad 1) Pomocí modulů, a pak nastavíš routování ;)

Ad 2) Co myslíš tím radvis? – jestli uživatele tak pomocí prenseteru Uzivatele (ve Front části) a jako ID bude jeho nick

Ad 3) Vytáhneš záznam do pole a to pomocí metody… nevím přesně jak naplníš formulář :)

Právě čtu co ses ptal ty( https://forum.nette.org/…ovani-modulu ), ale jsem stoho uplne zmateny:( …

mam v prezenteru ModuleAdministracePresenter a v tom mám AdministracePresenter a pak přímo ve složce presenter mam BasePresenter a NovinkyPresenter

bootstrap:
`/---code
$router[] = new Route(‚administrace/<presenter>/<action>/<id>‘, array(
‚module‘ ⇒ ‚Administrace‘,
‚presenter‘ ⇒ ‚Default‘,
‚action‘ ⇒ ‚default‘,
‚id‘ ⇒ NULL));

\---`

Editoval radvis (2. 9. 2009 17:07)

radvis
Začátečník | 110
+
0
-

Tak tu administraci jsme už zprovoznil, ale kdyz mam routu

$router[] = new Route('administrace/<presenter>/<action>', array(
        'module' => 'Administrace',
        'presenter' => 'Administrace',
        'action' => 'default',
        'id' => NULL));

tak url vypadá následovně: „neco.php/document_root/?presenter=Administrace?presenter=Administrace
jak to upravím aby url vypadala „neco.php/document_root/administrace“ ?

Ondřej Mirtes
Člen | 1536
+
0
-

Co to je neco.php/document_root/administrace? neco.php je název skriptu, za tím nemůžeš dělat routování.

Nastav si pořádně Apache, abys měl tvar http://domena/administrace, viz https://doc.nette.org/…ry-structure. Všechny požadavky v Nette směřují na index.php. Routovací mechanismus tvojí adresu s neco.php v názvu nerozpozná, ani netuším, jak se ti to povedlo udělat :)

Ad. 3: Založíš formulář a po přidání všech formulářových polí na něj zavoláš metodu setDefaults, pomocí které to nastavíš. Třeba takto:

protected function createComponentEditForm() {
	$form = new AppForm($this, 'editForm'); //připojení ke stromu komponent již tu, setDefaults to vyžaduje

	$form->addText('title', 'Title');
	$form->addTextarea('text', 'Text');

	$form->onSubmit[] = array($this, 'editFormSubmitted');
	$form->addSubmit('okSubmit', 'Save');

	$item = $this['model']->getItem($this->getParam('id'));

	$form->setDefaults(array(
		'title' => $item->title,
		'text' => $item->text,
	));
}

Editoval LastHunter (2. 9. 2009 19:13)

radvis
Začátečník | 110
+
0
-

Ale já chci mít to co jsi napsal, ale nevím jak toho docílim. Normálně mi to jde, ale mám teď stím potíže, protože nevím jak mám udělat tu routu.

radvis
Začátečník | 110
+
0
-

btw. to neco.php je název složky kterou mám na localhostu

radvis
Začátečník | 110
+
0
-

A ten edit:

$item = $this['Novinky']->getItem($this->find('id'));

$form->setDefaults(array(
        'text' => $item->text,
));

chyba: Cannot use object of type NovinkyPresenter as array
File: C:\wamp\www\domena.cz\app\presenters\NovinkyPresenter.php Line: 39
Line 39: $item = $this[‚Novinky‘]->getItem($this->find(‚id‘));

Editoval radvis (2. 9. 2009 19:51)

kravčo
Člen | 721
+
0
-

radvis napsal(a):

A ten edit:

$item = $this['Novinky']->getItem($this->find('id'));

$form->setDefaults(array(
        'text' => $item->text,
));

chyba: Cannot use object of type NovinkyPresenter as array
File: C:\wamp\www\domena.cz\app\presenters\NovinkyPresenter.php Line: 39
Line 39: $item = $this[‚Novinky‘]->getItem($this->find(‚id‘));

Nepoužívaš starú verziu Nette – 0.8? Skús prepísať $this['Novinky'] na $this->getComponent('Novinky') či to nepomôže…

radvis
Začátečník | 110
+
0
-

Teď mi to píše:

Component with name ‚Novinky‘ does not exist.

File: C:\wamp\www\Copy of webstudyo.cz\libs\Nette\ComponentContainer.php Line: 151

Line 151: throw new InvalidArgumentException(„Component with name ‚$name‘ does not exist.“);

ale model Novinky mám.

Editoval radvis (3. 9. 2009 17:41)

Tomik
Nette Evangelist | 485
+
0
-

Ale komponenta a model jsou dvě rozdílné věci. Máš tu komponentu do Presenteru přidanou? Nebo používáš továrničku?

redhead
Člen | 1313
+
0
-

možná sis špatně vyložil array-like přístup k datům v presenteru. Ono totiž syntaxí třeba $this[‚neco‘] (s tím že $this je presenter), tak přistupuješ ke komponentě a k ničemu jinému. Model si musíš vytvořit například jako proměnnou presenteru ($this->model = new Model) nebo používat statické třídy (např.: Model::get(20)).

Ondřej Mirtes
Člen | 1536
+
0
-

redhead napsal(a):

možná sis špatně vyložil array-like přístup k datům v presenteru. Ono totiž syntaxí třeba $this[‚neco‘] (s tím že $this je presenter), tak přistupuješ ke komponentě a k ničemu jinému. Model si musíš vytvořit například jako proměnnou presenteru ($this->model = new Model) nebo používat statické třídy (např.: Model::get(20)).

Já mám model také jako komponentu (dědím BaseModel od Component) a využívám ho také přes továrničky. Je to dobré kvůli lazy přístupu, nebudu přeci zakládat model, když bych ho pak v nějakém view vůbec nepotřeboval.

redhead
Člen | 1313
+
0
-

jasný, zapomněl jsem napsat že to jde i přes komponentu, jde ale o to jesli to takhle má i radvis.