Я могу придумать два решения.
Взгляните на приведенные здесь примеры для вдохновения:
http://agiletoolkit.org/doc/grid/columns
1. Добавление настраиваемого поля в сетку
Сначала создайте форму без разметки:
$form = $this->add('Form',null,null,array('form_empty'));
Затем добавьте сетку в такую форму:
$grid = $form->add('Grid'); // or MVCGrid if you are using models
Добавьте столбец для выбора:
$grid->addColumn('template','selection')
->setTemplate('<input type=radio name=selection value="<?$id?>"/>');
Наконец - убедитесь, что столбец «выбор» стоит первым (или последним).
$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>
РЕДАКТИРОВАТЬ: код, который работал у Фернандо
$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();
}
person
romaninsh
schedule
14.09.2011