天天看點

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

之前用過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)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

然後進入你要下載下傳symfony的位置

  1. composer create-project symfony/website-skeleton my-project
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

在開發時,您應該使用Nginx或Apache等Web伺服器(請參閱配置Web伺服器以運作Symfony)。 但是對于開發來說,使用Symfony PHP Web伺服器更加容易。

首先,進入你的新項目并安裝伺服器:

  1. 要啟動伺服器,請運作:php bin/console server:run
    Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3
  2. 如果退出就Ctrl+C

一、路由

1.配置

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

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

2.測試通路首頁

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

3.測試路由 symfony的路由配置方法有很多種,使用起來有多牛逼有多牛逼,這裡隻配置常用的兩種簡單的demo。ps:太複雜的我也沒玩過=-=

  1. 使用confg目錄下的routes.yaml配置路由
    Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3
  2. 使用注釋的方法配置路由(去掉上面routes.yaml的路由配置)
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

二、渲染模闆

symfony自帶twig模闆引擎,不會twig文法的可以先去https://blog.csdn.net/sinat_15955423/article/details/81236499看看

1.測試視圖頁

首先得確定

LuckyController繼承

Symfony的基類

AbstractController

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

2.檢視所有路由

在控制台輸入:php bin/console 擷取所有指令清單

php bin/console debug:router 可以擷取目前所有的路由
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

3.建立路由

symfony有很多種建立路由方法,比如在控制器上注釋路由,還有控制器生成路由,還有從模闆生成...

用法很多,這裡還是隻做控制器注釋路由。

測試同一個路由,有無參數時指向不同控制器的方法:

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

4.重定向路由

return $this->redirectToRoute('app_lucky_home',['max'=>10]);
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

三、生成控制器

1.為了節省時間,您可以安裝Symfony Maker并告訴Symfony生成一個新的控制器類:

php bin/console make:controller BrandNewController
           

建立控制器會自動生成相應的模闆:

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

 并且把控制器和模闆的基礎代碼給寫進去:

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

2.如果要從Doctrine 實體生成整個CRUD ,請使用:

php bin/console make:crud Product
           

如果沒有實體前運作上面的建立crud會報錯:(意思就是你還沒建立連結上資料庫)

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

3.安裝資料庫和Doctrine ORM(實體映射)

1)首先,通過ORM包以及MakerBundle安裝Doctrine支援,這可以自動生成一些代碼:

composer require symfony/orm-pack
           
composer require symfony/maker-bundle --dev
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

2) 配置資料庫

找到并自定義

.env

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

3)生成資料庫

上面已經設定了連接配接參數,Doctrine可以建立資料庫自定義名symfony:

php bin/console doctrine:database:create
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

4.建立實體類

如果你還沒想好資料庫是什麼樣的,您已經知道需要一個

Product

對象來表示這些産品。

您可以使用該

make:entity

指令建立此類以及所需的任何字段。該指令會問你一些問題 - 操作如下:

php bin/console make:entity
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

上面就會自動生成出實體類檔案Product.php和資料庫儲存檔案ProductRepository.php

該類稱為“實體”。很快,您将能夠将Product對象儲存和查詢到

product

資料庫中的表。

Product

 實體中的每個屬性都可以映射到該表中的列。這通常使用注釋完成:

@ORM\...

您在每個屬性上方看到的注釋:

5.遷移:建立資料庫表/模式

Product

班是完全配置好并儲存到一個

product

表。如果您剛剛定義了此類,那麼您的資料庫實際上還沒有該

product

 表。要添加它,您可以利用已安裝的DoctrineMigrationsBundle:

php bin/console make:migration
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

如果您打開此檔案,它将包含更新資料庫所需的SQL!要運作該SQL,請執行遷移:

php bin/console doctrine:migrations:migrate
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

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)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

新屬性已映射,但在

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檔案内容換成如下:

<?php

namespace 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',
        ]);*/
    }
}
           
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

更新日期:2019年04月28日

今天準備用symfony做api寫個vue部落格,使用的是Linux系統,繼續寫一下Linux上面如何使用symfony:

一、composer方式安裝

composer create-project symfony/skeleton my_project
           

顯示報錯,因為symfony4.2需要更新的composer版本,我的版本太低

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3
Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3

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

/usr/bin/composer self-update 

二、建立微服務

composer create-project symfony/skeleton my_project

權限不夠的話得前面加sudo

Symfony架構如何使用的筆記(symfony4.2)composer安裝Symfony架構下載下傳Composer 最新版本:v1.7.3