首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Symfony-2.0表单组件将HTML保存到数据库

使用Symfony-2.0表单组件将HTML保存到数据库
EN

Stack Overflow用户
提问于 2012-08-08 23:23:24
回答 2查看 2K关注 0票数 0

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

我的addPost操作如下所示

代码语言:javascript
复制
$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();
   }
}

问题是post表单有一个允许用户输入html的内容文本区域。当表单以<a href="#">test</a>等超文本标记语言提交时,内容将以<a href=\"#\">test</a>格式保存到数据库中。然后在随后的每一次保存中,反斜杠一次又一次地转义...

用Symfony2表单组件存储超文本标记语言的正确方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-10 22:16:40

在将字符串发送给用户进行编辑之前,应删除字符串中的反斜杠。您应该能够从$post对象获取内容,然后去掉它的斜杠并将其设置回post内容,如下所示。

代码语言:javascript
复制
$post = new Post();
$post->setContent(stripslashes($post->getContent()));
$postForm = $this->createForm(new PostFormType(), $post);

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

然而,我发现如果你返回同一页的响应,你仍然会看到反斜杠。要避免这种情况,您可以返回如下所示的RedirectResponse

代码语言:javascript
复制
if($postForm->isValid()){
   $em->flush();
   return new RedirectResponse('route', array('postId' => $postId)));
}
票数 1
EN

Stack Overflow用户

发布于 2012-08-10 02:43:53

这些斜杠放在那里,以便mysql引擎不会将这些引号与sql语法混淆。我建议您在从数据库检索字段时,但在将其发布到客户端之前,使用rejex去掉所有斜杠。让我看看如果我能为你找到rejex,也许有人会先我一步:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11867895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档