Есть два решения, которые я могу придумать.
Посмотрите на примеры здесь для вдохновения:
http://agiletoolkit.org/doc/grid/columns
1.Добавление настраиваемого поля в сетку
Сначала создайте форму без разметки:
$form = $this->add('Form',null,null,array('form_empty'));
Затем добавьте Grid в форму, подобную этой:
$grid = $form->add('Grid'); // or MVCGrid if you are using models
Добавьте столбец для выбора:
$grid->addColumn('template','selection')
->setTemplate('<input type=radio name=selection value="<?$id?>"/>');
Наконец - убедитесь, что столбец 'selection' является первым (или последним)
$grid->addOrder()->move('selection','first')->now();
Наконец, вам нужно вручную просмотреть данные POST,потому что это не реальный столбец формы.
if($form->isSubmitted()){
$this->js()->univ()->successMessage('Selection is '+((int)$_POST['selection']))
->execute();
}
Вы должны помнить, что доступ к POST напрямую подвергает вас атаке инъекцией, и вы должны правильно ее проверить.Сетка также ДОЛЖНА быть внутри формы, однако вы можете разместить кнопку отправки в другом месте на вашей странице.Вы также можете использовать «Form_Plain», см. «http://agiletoolkit.org/whatsnew"» для примера.
2. Использование JavaScript и скрытого поля
В этом примере вы можете добавить несколько элементов Radio button и связатьих в форму. Я также использовал здесь «Lister» вместо «Grid», конечно, вы можете смешивать и сочетать эти подходы.
$form = $this->add('Form');
$selection = $form->addField('line','selection');
// can be placed anywhere.
$menu = $this->add('MVCLister',null,null,array('view/menu'));
$menu->setModel('MenuItems');
$menu->js(true)->find('input[type=radio]')->click(
$selection->js()->_enclose()->val(
$this->js()->_selectorThis()->val()
);
);
// produces $('#menu_id').find('input[type=radio]').click(function(){
// $('#selection_id').val( $(this).val() );
// }
Ваш файл шаблона view / menu.html можетвыглядеть следующим образом:
<div class="menu-container">
<?rows?><?row?>
<div><input type="radio" name="anything" value="<?$id?>"> <?$name?> </div>
<?/row?><?/rows?>
</div>
EDIT: код, который работал для Фернандо
$grid->addColumn('template','Menu')
->setTemplate('<input type=\'radio\' name=\'selection\' value="<?$value?>"/> <?$value?>');
if($form->isSubmitted()){
$this->js()->univ()
->successMessage('Hoy: <b>'.$_POST['selection'].'</b>')->execute();
}