#silverstripe #silverstripe-4
#silverstripe #silverstripe-4
Вопрос:
Я изучаю SilverStripe и создаю пользовательский файл интерфейса. Но я не могу отобразить форму в представлении.
Это мой ArticlePageController.php
class ArticlePageController extends PageController
{
private static $allowed_actions = [
'CommentForm'
];
public function CommentForm()
{
$form = Form::create(
$this,
__FUNCTION__,
FieldList::create(
TextField::create('Name', '')->setAttribute('placeholder', 'Name*'),
EmailField::create('Email', '')->setAttribute('placeholder', 'Email*'),
TextareaField::create('Comment', '')->setAttribute('placeholder', 'Comment*')
),
FieldList::create(
FormAction::create('handleComment', 'Post Comment')
),
RequiredFields::create('Name', 'Email', 'Comment')
);
return $form;
}
public function handleComment($data, $form)
{
$comment = ArticleComment::create();
$comment->ArticlePageID = $this->ID;
$form->saveInfo($comment);
$comment->write();
$form->sessionMessage('Thanks for your comment!', 'good');
return $this->redirectBack();
}
}
Я добавил это в ArticlePage.php
private static $has_many = [
'Comments' => ArticleComment::class,
];
Это ArticleComment.php
class ArticleComment extends DataObject
{
private static $db = [
'Name' => 'Varchar',
'Email' => 'Varchar',
'Comment' => 'Text'
];
private static $has_one = [
'ArticlePage' => ArticlePage::class,
];
}
В ArticlePage.ss я пытаюсь отобразить форму следующим образом.
<h1>Post Your Comment</h1>
<div>
$ContactForm
</div>
Это не рендеринг формы. Как я могу отобразить форму?
Комментарии:
1. В вашем ArticlePage.ss вы вызываете $ContactForm , но в вашем контроллере она называется CommentForm, поэтому вы должны вызывать это — это может быть проблемой…
2. @ifusion вы должны опубликовать это в качестве ответа
Ответ №1:
В вашем ArticlePage.ss
вы вызываете $ContactForm
, но в вашем контроллере он назван CommentForm
, так что вы должны вызывать это — это может быть проблемой…
Комментарии:
1. Спасибо ifusion. Я этого не заметил. Приветствия.