除了在取得IRI時, API 網址前面的domain不可以寫死外,
其他網址當然也不能寫死阿.. 網址不能寫死!!!!!這很重要R~
第二十一篇的時候有說明在取得IRI時,網址不寫死的方法 ,
那如果是一般我們要取得某個目錄內的東西呢!!!?
解答就是利用我們前面所提到的參數設定 => parameter
將自己要的路徑寫成參數 ,不僅不會寫死 ,要改路徑的時候還只需要改一次就好
我們的檔案通常,會放在根目錄下 , 以下是取得根目錄的function
$this->params->get('kernel.project_dir')
還記得怎麼取得參數嗎 .. 就是透過ParameterBagInterface 的get,把參數名稱丟進去來取得
前一陣子在看兩個專案,因為版本有那麼一點點差距,
雖然都是4 , 但一個是4.3↑ 另一個是4.3↓,發現在權限控管的時候用法好像不太一樣....
在4.3以前可以使用has_role() 和 is_granted() 這兩種 , 4.3以後 has_role 被不建議使用了 ,
雖然說不建議使用但還是可以用啦XD ,只是未來如果被不建議使用的東西,官方可能不會去作修正 ,
像是3升4版的時候,也有一堆被不建議使用...那時候專案在upgrade的時候,
小菜鳥我還一一把不建議使用的東西換成可以用的....
不然每次看到黃黃的deprecated就很煩燥(╯‵□′)╯︵┴─┴
最近還有碰上一個問題,就是在實體類建立property的時候,
如果我們給了type ,例如給了int or string ,但是沒有給nullable為true就產生get和set的話 ,
它自動幫我們升成的型別 , 就會直接給我們設定的type,不會自動幫我們補上null ,
所以當該欄位資料有空的時候, 就會500error給我們看
解決方法有兩種
1.把get和set整個砍掉!!! 在property上加上nullable=true , 然後重新生成get和set
2.自己補上nullabel=true跟 在get和set的型態前上補上問號 , ? 代表是null的意思
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(?string $email): self
{
$this->email = $email;
return $this;
}
這樣一來資料有空的的話,Server就不會森77了(๑´ڡ`๑)
下一篇 , 來分享一下一個超好用的東西 => workflow流程引擎
雖然說講起來會稍微複雜點 , 但真的好用 !