我試圖從FormType
內的當前路線訪問參數page
。它在Controller
中工作,但不在FormType
中。我想避免傳遞參數/?page=1
,並且更喜歡/page/1
。Symfony:如何從FormType中的路由獲取參數?
的routing.yml
my_route:
path: /data/page/{page}
defaults:
_controller: MyBundle:MyController:myAction
的src/myBundle /窗體/類型/ MyFormType.php
class MyFormType extends AbstractType {
// ...
public function buildForm(FormBuilderInterface $builder, array $options) {
$request = Request::createFromGlobals();
$page = $request->query->get('page');
echo "page: $page"; // empty
// ...
}
}
我想避免通過控制器來傳遞參數FormType並且喜歡直接在FormType中訪問它。
任何想法?
在此先感謝!
編輯: 關於選定的答案; page
屬性可通過$request->attributes->get('page')
訪問,而不是通過$request->query->get('page')
訪問。
如果你有FormType旁路控制器和拉變量從全局變量中,你打敗了使用FormType的目的(而不是直接在Controller中的操作中構建表單)。FormTypes允許您在多個上下文中重用表單 - 您將無法在沒有相同路徑變量的任何路由上重複使用此FormType。 –
@HaydenSchiff好點,我真的同意你,但在我目前的情況下,這是一個可選的方式來設置默認的表單結構。如果路線具有參數,則FormType隱藏一個字段並設置其值。如果不是,則該字段可見並且用戶必須選擇/插入該值。上面的例子只是爲了保持簡單。 –