要使用validator , 首先要先裝兩個bundle , validator自己及annotation
在第一篇的時候有安裝過了,如果還沒安裝的看官們可以照下列command進行安裝~
composer require symfony/validator doctrine/annotations
安裝完畢後,我們還缺少一個東西...翻譯蒟蒻!! ..
要使用翻譯檔,想必我們又要安裝bundle而且進行config的設定了~
執行底下command 安裝translation bundle
composer require symfony/translation
安裝完以後,會在config目錄下的package資料夾裡看見一個translation.yaml檔,裡面可以進行語系的設定
default_locale 就是設定語系的參數,預設是en 英文語系,zh_TW是台灣語系,
translator底下的default_path參數是我們翻譯檔要放置的路徑位置,
小小提醒~第四篇有說到如果要在設定檔裡呼叫別的設定檔的參數,必須利用%把參數的id包起來呼叫,
上面所呼叫的參數為專案根目錄
接著我們根據路徑位置,至專案目錄下建立一個資料夾名為translations,
接著在資料夾裡建立一個validators.zh_TW.yml 檔案 , 檔案名稱語系的部分一定要對,不然會沒有作用
裡面會放像下列這樣,英文翻譯成中文,
如果不知道某個驗證訊息的英文的話可以到先前有提到的toolbar裡的validator查看
上述是symfony提供欄位不可為空(Not Blank)的驗證,底下是從toolbar裡查看的原文驗證訊息
右半部violation裡的messageTemplate就是原始的驗證訊息,message則是我們翻譯過後的
以上,翻譯蒟蒻也生出來了,就來開始介紹如何使用一些symfony提供的驗證吧 !! 打開先前建立的實體類
用註解式寫法使用以下驗證時,
記得要import Symfony\Component\Validator\Constraints as Assert 這個Class 哦~
as 後面放的只是這個class的別名 ,可以自己取,但是使用的時候前綴要是這個別名
1.當要驗證此欄位為必填的時候 :
只需要在property上加上註解式寫法Not Blank就好
/**
* @ORM\Column(name="name",type="string",length=20,nullable=true)
* @Assert\NotBlank()
*/
private $name;
2.當要驗證長度最大及最小時 :
/**
* @ORM\Column(name="name",type="string",length=20,nullable=true)
* @Assert\NotBlank()
* @Assert\Length(max="20",min="5",maxMessage="長度不可超過20字",minMessage="長度不可低於5個字")
*/
private $name;
在property上加上Length ,後面可以傳入四個參數 ,
max 為最大可輸入字數, min 則是最小可輸入自數,message的話是錯誤時要顯示的訊息
3.當欄位是email時,需檢查是否符合email格式 :
/**
* @ORM\Column(name="email",type="string",length=50,nullable=true)
* @Assert\Email()
*/
private $email;
在property上加上Email , symfony validator就會自動幫你驗證欄位是否符合email格式
以上三種是表單上很常用到的驗證,按住ctrl+滑鼠點擊驗證的註解式,
可以發現它們是一個個的annotation class,裡面會去做驗證, 這篇提到驗證需要安裝的bundle及一些基本的驗證,
下一篇會說明如何自己建立客製化validation及使用方式~