前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >撸个 symfony4(二)

撸个 symfony4(二)

作者头像
仇诺伊
发布2020-04-24 11:15:43
2.4K0
发布2020-04-24 11:15:43
举报
文章被收录于专栏:佳爷的后花媛

目标其实是完成如下的需求,如果有想看源码的,可以看下sf官网出的一个demo。

后面就慢慢完成:

  • 用户可以使用新浪微博或者 QQ 帐号登录。
  • 用户可以投稿,需要填写的内容为“标题”+“正文”
  • 用户可以对某篇文章进行评论

在以上的基础上,我们继续具体化我们的需求:

  • 用户的内容都将使用 markdown 格式
  • 评论内容不可超过 140 个字
  • 新闻内容不可超过 5000 个字
  • 标题内容不可超过 70 个字

修改配置文件

按照MySQL,将driver设置为PDO_Mysql。

sf2 or 3的数据库参数是放在一个parameter.ymal中的,但是sf4可以写在service里面。

php配置twig

需要在file type中加上twig文件的类型

创建controller

这里建议使用命令行创建controller。

bin/console make:controller NewsController

这里使用make的时候,可能会遇到小问题

`php bin/console generate:controller`可能会提示这个command不存在,不要方,`composer require symfony/maker-bundle`因为sf4简化了很多,许多bundle需要的时候才会去下载。

创建业务数据模型

新闻页面需要:

  • 标题
  • 文本

要在 AppBundle 里创建它,但是这些数据还需要一个持久层来保存数据,例如之前配置的 Mysql。目前流行的开发方式,无论是 Java 还是 ROR,都会使用 ORM 将数据库字段和类属性关联起来。

Symfony 框架本身并不包含 ORM 工具(严格意义上来说,Symfony 框架,即 FrameworkBundle,不包含 ORM,安全组件,模板引擎,日志工具,邮件组件等一系列工具),只不过 Symfony installer 将一些推荐的,Web 开发常用的工具,都默认安装了。如果你已经知道如何用 Mysql 来存储/获取数据,也不一定非要用 ORM。这里我们为了快速开发,也为了省一些精力,就使用默认提供的 Doctrine2 ORM,它会给我们的开发带来许多便利。

决定了使用 Doctrine,除了定义好 News 类,还需要写配置文件,让 Doctrine2 ORM 将 News 类同数据库某个表关联起来。听起来要做的工作不少,不过且慢,DoctrineBundle 里自带的代码生成工具能让我们的开发再快一点点:

sf4使用orm,需要`composer require orm`.

如果过程中遇到这种,不要方,清除缓存就可以了。

刷新 src/AppBundle 目录,多了一个 Entity 目录,此目录包含了两个文件:News.php 和 NewsRepository.php。

解决:

在.env文件中修改

到了这里,sf2、3、4的区别就有很多了,本来要生成表单的,sf2、3可以直接用curd,它不仅生成了控制器,所有的模板文件也都生成了,并且还生成了表单类。先不管表单类,访问新闻首页 /news/ 试试,没有意外的话,可以看到一个从新建、显示、编辑、删除都完全可用的新闻功能。但是切换到sf4,就不能用curd了,这个方法被弃用了。

需要注意的是:从 Symfony 2.6 开始,模板文件推荐是放在 app/Resources 下的,但是 doctrine:generate:crud 命令还是将模板文件放在了 AppBundle 的 Resources 目录。不仅如此,也不推荐使用 @Template 注解来猜模板路径(官方说法:主要因为性能问题),所以得把生成的 src/AppBundle/Resources 目录移到 app 目录,并且去掉控制器类里的所有 @Template 注解,而直接使用 $this->render 方法。

所以sf4的页面要自己写了,不过待会去看看官网上有没有给什么其他的方法使用。

今天就简单记录下这些吧,牙疼,溜了溜了,逛逛官网去,总觉得这个doctrine寄几还是个小白。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 佳爷的后花媛 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档