3problemy
- radvis
- Začátečník | 110
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
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
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
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
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
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)
- redhead
- Člen | 1313
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
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.