2011-12-02 107 views
3

我想創建一個匹配數組的路由。Symfony 2.0 - 如何使用數組參數創建路線?

例如:

 
    Name_show: 
     pattern: /Name/{names} 
     defaults: { _controller: testBundle:Name:showNames }

其中{names}持有名稱的數組,如:

array([1] => 'Thomas', [2] => 'Anton', [3] => 'Berta');

如何來處理呢? Symfony的2.0

Warning: preg_match() expects parameter 2 to be string, array given

迴應找不到的symfony文檔的任何解決方案。

回答

3

您可以使用它作爲字符串,只是serialize()前後的內容。

據我所知symfony2不允許數組在路由中,網址看起來如何與數組? URL必須是一個字符串,所以序列化數組並將其作爲字符串傳遞可能是更好的選擇。

+0

謝謝,會給它一個鏡頭。 – mrohnstock

+4

帶有數組的URL將如下所示:'http://domain.com?array [] = lorem&array [] = ipsum' – user2019515

+0

@ user2019515 true,但我不確定symfony2是否允許 – JamesHalsall

0

您必須驗證路由,所以要麼使用一些人爲的事件處理(請參閱kernel.controller event),要麼使用控制器,如果名稱位於陣列中或顯示錯誤頁面,則該控制器只是重定向到新的URL。

你也可以嘗試用ChainRouter替代默認的Symfony2路由器(支持基於Doctrine的路由選擇等)。

1

我同意@JamesHalsall關於序列化。我還會補充說,序列化的字符串在被用作GET參數之前應該被urlencoded。