Negeneruje se formulář +něco málo k modulům
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Mesiah
- Člen | 240
Dobrý den,
mám problém, negeneruje se mi formulář… Teď jsem s Nette asi týden
nic nedělal, tak mám pocit, že problém bude v nějaké hlouposti, ale
nedaří se mi na ni přijít.
Mám presenter Post a jeho akci show, v šabloně akci show volám widget
addComment, který je napsaný v PostPreseneteru i s událostí.
A k modelu: když mám strukturu aplikace:
app/
AdminModule/
presenters/
templates/
FrontModule/
presenters/
templates/
models/
presenters/
templates/
...
...
pak mi robotLoader nenajde template k určeným modulům a musím mít neprůhlednou strukturu aplikace
app/
AdminModule/
presenters/
FrontModule/
presenters/
models/
presenters/
templates/
AdminModule/
FrontModule/
...
...
...
Nevíte, proč mi to dělá? Budete k tomu potřebovat víc informací? Tak to je asi vše k úvodu.
PostPresenter
<?php
final class Front_PostPresenter extends BasePresenter
{
private $__posts;
private $__comments;
public function actionShow($id)
{
$this->template->post = $this->posts->findPostById($id);
}
public function createComponentAddComment()
{
$toId = $this->getParam('id');
$post = $this->posts->findPostById($toId);
if (!$post)
{
throw new BadRequestException('Post don\'t exist.');
}
dump($post);
// TADY SE VYPÍŠE OBJEKT, TAKŽE JE NALEZEN
$form = new AppForm();
$form->addHidden('id', $post->id);
$form->addText('name', 'Jméno')->addRule(Form::FILLED, 'Jméno je povinná položka, bez ní nelze vkládat komentář.');
$form->addText('email', 'E-Mail')->addRule(Form::EMAIL, 'E-Mail musí mít platný tvar.');
$form->addTextArea('text', 'Text', 60)->addRule(Form::FILLED, 'Text nemůže být prázdný.');
$form->addSubmit('save', 'Přidat');
$form->onSubmit[] = callback($this, 'onAddComment');
return $form;
}
public function onAddComment(AppForm $form)
{
if ($form['save']->isSubmittedBy())
{
$comment = new Comment();
$values = $form->getValues();
$comment->id_post = $values['id'];
$comment->name = $values['name'];
$comment->email = $values['email'];
$comment->posted = new DateTime();
$comment->text = $values['text'];
$comment->create();
$this->flashMessage('Díky za Váš komentář.', 'information');
}
$this->redirect($this);
}
public function getPosts()
{
if (!isset($his->__posts))
{
$this->__posts = new Posts();
}
return $this->__posts;
}
public function getComments()
{
if (!isset($this->__comments))
{
$this->__comments = new Comments();
}
return $this->__comments;
}
}
?>
show.phtml
<?php
// ...
<img class="border" src="{$basePath}/design/grbrd-right.png" alt="" />
<a name="comments"></a>
{widget comments $post->id}
<img class="border" src="{$basePath}/design/grbrd-left.png" alt="" />
{widget addComment $post->id}
?>
Editoval Mesiah (14. 8. 2010 17:09)