簡體   English   中英

生成URL symfony 2空值

[英]Generate URL symfony 2 empty value

我在symfony 2中有此生成url鏈接:

$route = $this->generateUrl('mail', array('from' => $oSender->getSettingValue(),
        'adres' => (empty($aInfo['executorEmail']) ? 'info@blablabla.nl' : $aInfo['executorEmail']),
        'subject' => 'Werkbonnen project ' . $aInfo['projectName'] . ' week ' . $aInfo['workOrderWeeknumber'],
        'name' => $aInfo['executorName'],
        'filename' => $filename,
        'filename2' => '',
        'workOrderId' => $id));

路線注釋:

 /**
 * @Route("/workorder/mail/{from}/{adres}/{subject}/{name}/{filename}/{filename2}/{workOrderId}", name="mail")
 * @Template()
 */

而此功能將生成路由:

public function mailAction(Request $request, $from = '', $adres = '', $subject = '', $name = '', $filename = '', $filename2 = '', $workOrderId) {
// some code here not important

}

它一直在說:

Parameter "filename2" for route "mail" must match "[^/]++" ("" given) to generate a corresponding URL.

我怎樣才能用symfony中的generateUrl函數給一個空值。 變量filename2是可選的。

謝謝!

路由與普通的PHP函數相同,即傳遞的變量中沒有其他參數時,不能在其中包含空參數。
因此,對於您的問題,您有兩種選擇:

  1. filename2參數放在路徑的末尾,使其成為可選
  2. filename2保留在原位,但為其提供默認值。

如果選擇選項2,則示例路線為:

/**
 * @Route("/workorder/mail/{from}/{adres}/{subject}/{name}/{filename}/{filename2}/{workOrderId}", name="mail", defaults={"filename2" = 0})
 */

有關帶有參數的路由的更多信息,請參見Symfony文檔

您不能將空字符串傳遞給URL參數。 嘗試類似:

$route = $this->generateUrl('mail', array('from' => $oSender->getSettingValue(),
        'adres' => (empty($aInfo['executorEmail']) ? 'info@blablabla.nl' : $aInfo['executorEmail']),
        'subject' => 'Werkbonnen project ' . $aInfo['projectName'] . ' week ' . $aInfo['workOrderWeeknumber'],
        'name' => $aInfo['executorName'],
        'filename' => $filename,
        'filename2' => 'something',
        'workOrderId' => $id));

正則表達式很清楚, [^/]++意思是“一個不包含字符/的非空字符串”。

如果該參數可以為空,則不能將其放在URL中,而必須使用查詢字符串:

/你/真的/長/ URL /與/所有/你/參數?文件名2 =

    $route = $this->generateUrl('mail', array(
        'workOrderId' => $id,
        'from' => $oSender->getSettingValue(),
        'adres' => (empty($aInfo['executorEmail']) ? 'info@blablabla.nl' : $aInfo['executorEmail']),
        'subject' => 'Werkbonnen project ' . $aInfo['projectName'] . ' week ' . $aInfo['workOrderWeeknumber'],
        'name' => $aInfo['executorName'],
        'filename' => $filename,
        'filename2' => ''));

沒關系,這為我工作,必須在URL中最后輸入filename2參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM