簡體   English   中英

Symfony generateUrl 問題 .... 必須匹配 "[^/]++" ("my string with special chars" given) 以生成相應的 URL。

[英]Symfony generatUrl problem .... must match "[^/]++" ("my string with special chars" given) to generate a corresponding URL."

我正在嘗試將 google indexer api 與 symfony 一起使用,因此我需要從我的工作實體(在數據庫中)動態生成相同的 URL,就像我已經在前端使用的一樣。

我的控制器功能看起來(減少)像這樣

/**
 *
 * @Route({
 *     "de": "/profile/{name}-{id}/career/{jobname}-{jobid}",
 *     },  name="somename")
 */
public function detailfunction($name, $id, $jobname, $jobid)
{ // some code
}

在我的前端,我得到了由 twig(路徑函數)呈現的以下 url:

https://www.mydomain.xy/profile/This+is+a+company+name-23/career/Worker+Montage+%2528mwd%2529-135

所以現在我需要向谷歌發送完全相同的 url,以便在修改此頁面時更新索引。

我嘗試在我的“google indexer”函數的控制器中生成這個url,如下所示:

$job = $this->getDoctrine()->getRepository(Jobs::class)->findBy(....);
$url = $this->generateUrl('somename', array('name' => $job->getCompany()->getName(),
                                            'id' => $job->getCompany()->getid(),
                                            'jobname" => $job->getTitle(),
                                            'jobid' => $job->getId()));

// Debug
echo $url;

不幸的是,它輸出“錯誤:路由“somename”的參數“jobname”必須匹配“[^/]++”(給出的“Worker Montage(m/w/d)”)以生成相應的 URL”

因此,它不會對來自 url 生成器的數據庫的數據進行編碼。 我一直想知道 symfony(或 twig)實際上是如何在內部編碼的,但我完全迷失了,非常感謝你的提示。

雖然我仍然不確定 symfony / twig 是如何對 url 進行編碼的,但我編寫了一個小變通函數並在將其傳遞給 generateURL 函數之前調用它。

  array('name' => $this->urlcleaner($job->getCompany()->getName()),
        'id' => $job->getCompany()->getId(),



private function urlcleaner($string){

    $string = preg_replace('/[^A-Za-z0-9\-ığşçöüÖÇŞİıĞ()\/]/', ' ', $string);
    $string = str_replace("/","",$string);
    $string = str_replace("-","",$string);
    $string = urlencode($string);

    return $string;
}

暫無
暫無

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

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