之前用过symfony2.8系列的版本开发过在线教育的购课网站,所以对这个框架不是太陌生。已经有半年没用过了,今天把最新版4.2的使用笔记记录下来,方便自己和他人对symfony有更深的理解。(未完)

composer安装Symfony框架

下载Composer 最新版本:v1.7.3

Windows Installer

安装程序将为您下载composer并设置PATH环境变量,以便您可以composer从任何目录中进行调用。

下载并运行Composer-Setup.exe - 它将在执行时安装最新的composer版本。

安装的时候需要选择你的PHP位置

用默认的就一路确定即可

cmd打开

composer --version回车查看版本

然后进入你要下载symfony的位置

  1. composer create-project symfony/website-skeleton my-project

在开发时,您应该使用Nginx或Apache等Web服务器(请参阅配置Web服务器以运行Symfony)。 但是对于开发来说,使用Symfony PHP Web服务器更加容易。

首先,进入你的新项目并安装服务器:

  1. 要启动服务器,请运行:php bin/console server:run
  2. 如果退出就Ctrl+C

一、路由

1.配置

如果使用的是apache或者nginx,得配置根目录到public目录下

2.测试访问首页

3.测试路由 symfony的路由配置方法有很多种,使用起来有多牛逼有多牛逼,这里只配置常用的两种简单的demo。ps:太复杂的我也没玩过=-=

  1. 使用confg目录下的routes.yaml配置路由

  2. 使用注释的方法配置路由(去掉上面routes.yaml的路由配置)

二、渲染模板

symfony自带twig模板引擎,不会twig语法的可以先去https://blog.csdn.net/sinat_15955423/article/details/81236499看看

1.测试视图页

首先得确保LuckyController继承Symfony的基类AbstractController

2.查看所有路由

在控制台输入:php bin/console 获取所有命令列表

php bin/console debug:router 可以获取当前所有的路由

3.创建路由

symfony有很多种创建路由方法,比如在控制器上注释路由,还有控制器生成路由,还有从模板生成...

用法很多,这里还是只做控制器注释路由。

测试同一个路由,有无参数时指向不同控制器的方法:

4.重定向路由

return $this->redirectToRoute('app_lucky_home',['max'=>10]);

三、生成控制器

1.为了节省时间,您可以安装Symfony Maker并告诉Symfony生成一个新的控制器类:

 php bin/console make:controller BrandNewController

创建控制器会自动生成相应的模板:

并且把控制器和模板的基础代码给写进去:

2.如果要从Doctrine 实体生成整个CRUD ,请使用:

php bin/console make:crud Product

如果没有实体前运行上面的创建crud会报错:(意思就是你还没创建链接上数据库)

3.安装数据库和Doctrine ORM(实体映射)

1)首先,通过ORM包以及MakerBundle安装Doctrine支持,这可以自动生成一些代码:

composer require symfony/orm-pack
composer require symfony/maker-bundle --dev

2) 配置数据库

找到并自定义.env

3)生成数据库

上面已经设置了连接参数,Doctrine可以创建数据库自定义名symfony:

php bin/console doctrine:database:create

4.创建实体类

如果你还没想好数据库是什么样的,您已经知道需要一个Product对象来表示这些产品。

您可以使用该make:entity命令创建此类以及所需的任何字段。该命令会问你一些问题 - 操作如下:

php bin/console make:entity

上面就会自动生成出实体类文件Product.php和数据库储存文件ProductRepository.php

该类称为“实体”。很快,您将能够将Product对象保存和查询到product数据库中的表。Product 实体中的每个属性都可以映射到该表中的列。这通常使用注释完成:@ORM\...您在每个属性上方看到的注释:

5.迁移:创建数据库表/模式

Product班是完全配置好并保存到一个product表。如果您刚刚定义了此类,那么您的数据库实际上还没有该product 表。要添加它,您可以利用已安装的DoctrineMigrationsBundle:

php bin/console make:migration

如果您打开此文件,它将包含更新数据库所需的SQL!要运行该SQL,请执行迁移:

php bin/console doctrine:migrations:migrate

6.迁移和添加更多字段

但是如果你需要添加一个新的字段属性Product,比如description?您可以编辑该类以添加新属性。但是,你也可以make:entity 再次使用:

 php bin/console make:entity
Class name of the entity to create or update
> Productto stop adding fields):
> descriptionField type (enter ? to see all types) [string]:
> textCan this field be null in the database (nullable) (yes/no) [no]:
> noto stop adding fields):
>
(press enter again to finish)

这会添加新description属性getDescription()setDescription() 方法:

新属性已映射,但在product表中尚不存在。没问题!生成新迁移:

 php bin/console make:migration

这次,生成的文件中的SQL将如下所示:

1
ALTER TABLE product ADD description LONGTEXT NOT NULL

迁移系统很聪明。它将所有实体与数据库的当前状态进行比较,并生成同步它们所需的SQL!像以前一样,执行迁移:

 php bin/console doctrine:migrations:migrate

这只会执行一个新的迁移文件,因为DoctrineMigrationsBundle知道第一次迁移已经在之前执行过。在幕后,它管理一个migration_versions表来跟踪这个。

每次更改模式时,运行这两个命令以生成迁移,然后执行它。确保提交迁移文件并在部署时执行它们。

7.将对象保留到数据库

是时候将Product对象保存到数据库了!让我们创建一个新的控制器进行实验:

php bin/console make:controller ProductController

把生成的Product.php文件内容换成如下:

<?phpnamespace App\Controller;use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;class ProductController extends AbstractController
{/*** @Route("/product", name="product")*/public function index(){$entityManager = $this->getDoctrine()->getManager();$product = new Product();$product->setName('Keyboard');$product->setPrice(1999);$product->setDescription('Ergonomic and stylish!');// tell Doctrine you want to (eventually) save the Product (no queries yet)$entityManager->persist($product);// actually executes the queries (i.e. the INSERT query)$entityManager->flush();return new Response('Saved new product with id '.$product->getId());/* return $this->render('product/index.html.twig', ['controller_name' => 'ProductController',]);*/}
}

更新日期:2019年04月28日

今天准备用symfony做api写个vue博客,使用的是Linux系统,继续写一下Linux上面如何使用symfony:

一、composer方式安装

composer create-project symfony/skeleton my_project

显示报错,因为symfony4.2需要更新的composer版本,我的版本太低

更新一下composer,你的如果比较新就不用管了

/usr/bin/composer self-update

二、创建微服务

composer create-project symfony/skeleton my_project

权限不够的话得前面加sudo

Symfony框架如何使用的笔记(symfony4.2)相关推荐

  1. Symfony4中文文档: 安装和设置Symfony框架

    安装和设置Symfony框架 要创建新的Symfony应用程序, 首先确保使用的是PHP7.1 或更高版本并且已经安装Componser. 如果未安装, 请首先在系统上全局安装Componser. 如 ...

  2. php symfony 安装,Symfony4中文文档: 安装和设置Symfony框架

    安装和设置Symfony框架 要创建新的Symfony应用程序, 首先确保使用的是PHP7.1 或更高版本并且已经安装Componser. 如果未安装, 请首先在系统上全局安装Componser. 如 ...

  3. symfony php 更新内容,Symfony框架中的Doctrine

    在新的标准版本的Symfony框架中已经集成了Doctrine,Doctrine就是一种对象关系映射(ORM)同时也是一种数据库抽象层(DBAL),使用ORM和DBAL能让我们很轻易的操作数据库.本文 ...

  4. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  5. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http:// ...

  6. Symfony 框架实战教程——第一天:创建项目(转)

    这个系列的实战博客真是太有用了,很多例子自己调试也是通的,不同于很多网上不同的实战例子...附上原文地址  https://www.chrisyue.com/symfony-in-action-day ...

  7. symfony框架_为什么我们放弃传统的Symfony框架

    symfony框架 一个成功的组织为什么要抛弃一个拥有活跃的开发人员社区的优秀开源Web开发平台? 这就是我要讲的故事. 如果您不熟悉eZ Systems的名称,请允许我们自我介绍:eZ是商业开源软件 ...

  8. 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)

    一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...

  9. 26Play框架教程2学习笔记

    Play框架教程2学习笔记 文章目录 1 play框架01 1.1 概述 1.2 特性 1.2.1 无缝集成现有开发环境 1.2.2 热重载和修改Bug 1.2.3 简单的无状态MVC架构 1.2.4 ...

最新文章

  1. Kafka 3.0重磅发布,都更新了些什么?
  2. 数组去重--这几种方法够不?
  3. 2021江苏南通名师高考成绩查询,南通2021高考成绩排名榜单,南通各高中高考成绩喜报...
  4. java线程状态有哪几种,顺利拿到offer
  5. java怎么测试dao_java-Mockito使用模拟对象测试DAO
  6. log4net在winform中release后不工作的原因
  7. 大道至简第七第八章读后感
  8. 全国计算机信息高新技术办公软件应用模块,全国计算机信息高新技术办公软件应用模块(Windows系列)教案.doc...
  9. java .class的作用_Java中Class类的作用与深入理解
  10. [转]:vue-cli3.0配置详解
  11. APUE学习笔记-15章进程间通信
  12. ABB伺服驱动调试(二)
  13. python可视化47|最常用5个排序(Ranking)关系图
  14. 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
  15. 职场解释系:张三丰的接班人计划
  16. 电力行业工程设计资质怎么办?专业类别有哪些?
  17. Caused by: org.springframework.web.client.RestClientException: Error while extracting response for t
  18. 一种结合基于股债利差的A股估值百分位、有限价值策略定投和股债组合投资的创新型低回撤高收益稳健理财方法
  19. 计算机专业招聘人才的需求,对计算机专业人才需求现状
  20. Visual Studio 2010的Productivity Power Tool扩展

热门文章

  1. Go 语言学习:Go 语言之旅——练习题及参考答案
  2. UART、RS232、RS485、IIC的通信原理介绍
  3. 鸿蒙IDE的家居设备控制模板使用经验
  4. ensp静态综合实验报告
  5. 为FPGA设计添加复位功能的注意事项
  6. 解决USB设备有时无法安全卸载的问题
  7. 三、PCB封装库制作
  8. 一款轻量级日常备忘录小程序
  9. 【Tomcat】Tomcat原理 第一部分 Tomcat基础
  10. #php 导出Excel中文文件名乱码#