0

我正在尝试使用 Symfony2 表单系统保存 HTML 内容,但我遇到了转义问题。

我的 addPost 操作看起来像这样

$em = $this->getDoctrine()->getEntityManager();

$post = new Post();
$postForm = $this->createForm(new PostFormType(), $post);

if ($request->getMethod() == 'POST') {
   $postForm->bindRequest($request);

   if($postForm->isValid()){
      $em->persist($post);
      $em->flush();
   }
}

问题是帖子表单有一个内容文本区域,允许用户输入 html。当使用 html 提交表单时<a href="#">test</a>,内容会以<a href=\"#\">test</a>. 然后在随后的每次保存中,反斜杠一次又一次地逃脱......

使用 Symfony2 表单组件存储 HTML 的正确方法是什么?

4

2 回答 2

1

在将字符串发送给用户进行编辑之前,您应该从字符串中删除反斜杠。您应该能够从 $post 对象中获取内容,然后剥离其斜线并将其设置回帖子内容,就像这样。

$post = new Post();
$post->setContent(stripslashes($post->getContent()));
$postForm = $this->createForm(new PostFormType(), $post);

现在,当表单呈现时,它将没有转义字符。

但是,我发现如果您返回同一页面的响应,您仍然会看到反斜杠。为避免这种情况,您可以像这样返回 RedirectResponse

if($postForm->isValid()){
   $em->flush();
   return new RedirectResponse('route', array('postId' => $postId)));
}
于 2012-08-10T14:16:40.057 回答
0

这些斜线放置在那里,以便 mysql 引擎不会将这些引号与 sql 语法混淆。我建议您在从数据库中检索字段时使用拒绝删除所有斜杠,但在将其发布到客户端之前。让我看看能不能给你找到rejex,也许有人会打败我:)

于 2012-08-09T18:43:52.867 回答