。
在Symfony中,ThreadType是一个表单类型,用于处理消息线程。默认情况下,ThreadType使用CollectionType来处理消息集合。CollectionType允许在表单中动态添加或删除多个表单字段。
要为每条消息显示一个字段,而不仅仅是第一条,可以通过以下步骤实现:
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class ThreadType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('messages', CollectionType::class, [
'entry_type' => TextareaType::class,
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'prototype_name' => '__message_index__',
]);
}
}
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class ThreadController extends AbstractController
{
/**
* @Route("/thread", name="thread")
*/
public function index(Request $request)
{
$thread = new Thread();
$form = $this->createForm(ThreadType::class, $thread);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// 处理表单提交逻辑
}
return $this->render('thread/index.html.twig', [
'form' => $form->createView(),
]);
}
}
{# templates/thread/index.html.twig #}
<form method="post" action="{{ path('thread') }}">
{{ form_widget(form) }}
<button type="submit">提交</button>
</form>
这样,每次添加新的消息字段时,都会在表单中显示一个新的Textarea字段,而不仅仅是第一条消息。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云