不在同一线的radiobutton值

时间:2011-09-14 13:44:46

标签: forms radio-button atk4

我正在构建一个“自助菜单列表”表单,其中包含许多“菜单”单选按钮的选项。 但是我注意到所有这些值都是“内联”的,就像在这个示例中一样:http://demo.atk4.com/demo.html?t=14

我想首先知道如何在每个值上添加换行符,然后,我如何通过添加某种<来模拟组? p为H. < / p为H.特定选项值之间(逻辑分组)。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我能想到两种解决方案。

请看这里的例子以获得灵感:

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?>"/>');

最后 - 确保列'选择'是第一个(或最后一个)

$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和隐藏字段

在此示例中,您可以添加一组单选按钮元素并将它们绑定到表单。我也在这里使用“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();
}