撸个 symfony4

Posted 佳爷的后花媛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了撸个 symfony4相关的知识,希望对你有一定的参考价值。

        目标其实是完成如下的需求,如果有想看源码的,可以看下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。

撸个 symfony4(二)

解决:

在.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寄几还是个小白。


以上是关于撸个 symfony4的主要内容,如果未能解决你的问题,请参考以下文章

撸个服务端出来系列

撸个服务端出来系列

纯 Java 撸个后台管理系统,这框架用起来贼好

手捉手教你撸个css渐变边框,实现王者荣耀头像框

项目需求,也撸个审批流程的玩意

手动撸个Android雷达图(蜘蛛网图)RadarView