Понимание формы и действия:
Обычно мы будем настроить форму с полями, распечатать его в HTML и заполнить форму данными. Нажатие кнопки отправки формы отправит все данные методу, определенному в вашем виде action
атрибут html.
Метод получит и получит $request
с большим количеством параметров, а также формой с данными. Эти значения будут обработаны в действии.
Давайте посмотрим, как это точно работает в Symfony:
Определение и настройка форма Symfony, как тот, который вы показали выше. Распечатайте форму и в точке параметра действия к методу , который будет получать запрос представить:
<form action="currentModuleName/update"
Symfony автоматически отправит запрос на action.class.php
вашего модуля, и будет искать и отправить данные функции executeUpdate
общественная функция executeUpdate (sfWebRequest $ запросу) {
// ...
$ this-> form = new TestForm ($ doctrine_record_found);
$ this-> processForm ($ request, $ this-> form);
}
После некоторых проверок, Symfony будет обрабатывать форму и установить в результате шаблон.
processForm (sfWebRequest $ запрос, sfForm $ форма) {...}
$ this-> setTemplate ('редактировать');
В processForm
вашего модуля action.class.php
, вы должны обработать все полученные значения (запрос) также с формой:
protected function processForm(sfWebRequest $request, sfForm $form)
{
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
if ($form->isValid())
{
$formValues = $this->form->getValues();
$Id = $formValues['yourWidgetName'];
}
}
Вы можете проверить следующее link для примера как ваш, о том, как обрабатывать sfWidgetFormChoice
.
И теперь, отвечая на реальный вопрос, чтобы выбрать удаленные пользователи, добавьте следующий код в действии:
//process the form, bind and validate it, then get the values.
$formValues = form->getValues();
$choicesId = $formValues['choices'];
переменной Pass от действия к форме:
извинить если я вообще не понимаю ваш вопрос, но если вам нужно передать некоторые параметры из вашего действия в форму, отправьте переменные инициализации в массив в конструктор формы:
Pass a variable to a Symfony Form
В вашем случае получите список пользователей, удалите пользователя, которого вы не хотите, и отправьте не удаленных пользователей в конструктор формы.
Вам нужно будет повторно добавить/перезаписать форму в функции configure(), чтобы вы могли изменить инициализацию формы. Скопируйте и вставьте тот же код в функцию configure() и прокомментируйте строку: // parent :: setup();
class TbTestForm extends BaseTbTestForm
{
public function configure()
{
//.. copy here the code from BaseTbTestForm
//parent::setup();
$vusers = $this->getOption('array_nondeleted_users');
//now set the widget values with the updated user array.
}
}
Почему вы отметили его symfony2? – cheesemacfly
Понятно, что пользователи symfony2 начали с 1.4. Я ищу как можно больше подверженности моему вопросу. – Patrick
Вместо этого вы должны использовать [щедрость] (http://stackoverflow.com/help/bounty). Следует избегать добавления не связанных тегов к вопросу, чтобы получить видимость. – cheesemacfly