Symfony框架如何使用的笔记(symfony4.2)

之前用过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框架如何使用的笔记(symfony4.2)_第1张图片

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

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

Symfony框架如何使用的笔记(symfony4.2)_第2张图片

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

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

  1. 要启动服务器,请运行:php bin/console server:runSymfony框架如何使用的笔记(symfony4.2)_第3张图片
  2. 如果退出就Ctrl+C

一、路由

1.配置

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

Symfony框架如何使用的笔记(symfony4.2)_第4张图片

2.测试访问首页

Symfony框架如何使用的笔记(symfony4.2)_第5张图片

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 可以获取当前所有的路由

Symfony框架如何使用的笔记(symfony4.2)_第6张图片

3.创建路由

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

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

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

4.重定向路由

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

三、生成控制器

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

 php bin/console make:controller BrandNewController

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

Symfony框架如何使用的笔记(symfony4.2)_第7张图片

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

Symfony框架如何使用的笔记(symfony4.2)_第8张图片

Symfony框架如何使用的笔记(symfony4.2)_第9张图片

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

php bin/console make:crud Product

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

Symfony框架如何使用的笔记(symfony4.2)_第10张图片

 

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

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

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

Symfony框架如何使用的笔记(symfony4.2)_第11张图片

2) 配置数据库

找到并自定义.env

Symfony框架如何使用的笔记(symfony4.2)_第12张图片

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

Symfony框架如何使用的笔记(symfony4.2)_第13张图片

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

php bin/console doctrine:migrations:migrate

Symfony框架如何使用的笔记(symfony4.2)_第14张图片

 

6.迁移和添加更多字段

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

 php bin/console make:entity
Class name of the entity to create or update
> Product

 to stop adding fields):
> description

Field type (enter ? to see all types) [string]:
> text

Can this field be null in the database (nullable) (yes/no) [no]:
> no

 to stop adding fields):
>
(press enter again to finish)

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

Symfony框架如何使用的笔记(symfony4.2)_第15张图片


新属性已映射,但在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文件内容换成如下:

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',
        ]);*/
    }
}

Symfony框架如何使用的笔记(symfony4.2)_第16张图片

更新日期:2019年04月28日

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

一、composer方式安装

composer create-project symfony/skeleton my_project

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

Symfony框架如何使用的笔记(symfony4.2)_第17张图片 

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

/usr/bin/composer self-update 

二、创建微服务

composer create-project symfony/skeleton my_project

权限不够的话得前面加sudo

Symfony框架如何使用的笔记(symfony4.2)_第18张图片 

 

 

你可能感兴趣的:(php,symfony)