Symfony筆記之–控制器的快捷方法

lcp0578發表於2019-02-16

Shortcuts methods in Controller

1. 獲取服務

    $this->get($serviceId);

2. 重定向

    
    $this->redirectToRoute($routeName, $parameters, $status = 302);

3. 生成路由的url

    $this->generateUrl($routeName, $parameters, $referenceType);

4. 返回一個json response

    
    $this->json($data, $status = 200, $headers = array(), $context = array());

5. 新增一個flash message

    $this->addFlash($type, $message);

6. 判斷是否授權進入某個方法

    $this->isGranted(`ROLE_ADMIN`);

7. 判斷使用者是否授權,否,丟擲異常


    $this->denyAccessUnlessGranted(`ROLE_EDIT`, $item, `You cannot edit this item.`);

8. 手動判斷 CSRF token是否合法

    $this->isCsrfTokenValid(`token_id`, $token);

9. 把請求轉發到其他控制器和方法

    $this->forward(`GregwarCaptchaBundle:Captcha:generateCaptcha`, [`key` => $key]);
    //forward($controller, array $path = array(), array $query = array())

PS: 第二個引數為route上佔位符引數,第三個為其他額外的引數

10. 檔案下載(symfony >= 3.2)

    $this->file();

    //簡單用法示例
     return $this->file($docPath, $saveName); 
     // 如果是pdf之類,直接顯示而不是下載,需要設定第三個引數ResponseHeaderBag::DISPOSITION_INLINE
    // 還可以直接接受一個File或者UploadedFile例項
    //$samplePdf = new File(`/sample.pdf`);
    //return $this->file($samplePdf);

11. 讀取配置引數

    $this->getParameter(`kernel.root_dir`);

相關文章