2010-08-16 5 views
1

У меня есть форма, и я хочу передать ей один параметр, который должен использовать для заполнения виджета.symfony: Форма с одним параметром

я передать параметр в моей URL:

url_for('myModule/new?parameter='.$myParam) 

Я попытался взять параметр в своем действии и отобразить его в моем tamplate, но он не работает.

Действие:

$this->param = $request->getParameter('parameter'); 

Шаблон:

echo param; 

Но я не могу восстановить его в моей форме.

Как это сделать?

ответ

0

Если параметр является атрибутом объекта, вы можете сделать:

$object = new Class(); 
$object->setAttribute($request->getParameter('myParam')); 

$form = new ClassForm($object); 
+0

Или если вам нужна опция формы '$ form = new ClassForm ($ object, array (" myoption "=> $ request-> getParameter (" myOption ")));' – domi27

0

Вы должны определить маршрут для этого URL-адреса в своем маршруте routing.yml и добавить свой параметр к этому маршруту.

, например:

mymoduel_new: 
    url: myModule/new/:paramter/ 
    param: { module: myModule, action: new } 
5

Если этот параметр необходим для инициализации вашей формы, то вы можете сделать это следующим образом (имейте в виду, что вы всегда должны подтвердить ввод данных пользователем)

public function executeNew($request) 
    { 
    $formOptions = array('parameter' => $request->getParameter('parameter')); 
    $this->form = new MyForm(array(), $formOptions); 
    // Then within your form you access it with: 
    // $parameter = $this->options['parameter']; 
    // or even better: 
    // $parameter = $this->getOption('parameter'); 
    ... more code ... 
    } 

Если параметр представляется как часть формы, тогда вы должны связать его следующим образом:

public function executeNew($request) 
    { 
    $this->form = new MyForm(); 
    if ($request->isMethod('post')) { 
     $this->form->bind($request->getPostParameters()); 
    } 
    ... more code ... 
    } 

Дополнительную информацию о том, как создавать и использовать формы, можно найти в статье Forms in Action от Symfony.

Редактировать: добавлен $this->getOption('parameter') в пример кода.

+0

Я попробовал ваше первое решение с $ formOptions. Но xDebug назовет меня: 'parameter' => null. Однако я передал что-то в своем URL-адресе. Я не понимаю, почему. – Elorfin

+0

Когда вы вызываете $ this-> getOption ('параметр') в методе настройки формы, что он возвращает? – lunohodov

+0

У меня есть ошибка: «Вызовите undefined метод sfPartialView :: getOption». Проблема не связана с методом восстановления значения, проблема в том, что параметр не передается в шаблон. – Elorfin

0

Вам необходимо передать его конструктору формы, как конструкторы sfForm, так и sf{Propel,Doctrine}Form введите параметр $options, используйте это. Сохраните это значение в частной собственности, поэтому вы можете использовать его в методе configure формы.

Смежные вопросы