我正在构建一个“自助菜单列表”表单,其中有很多“菜单”单选按钮选项。但是我注意到所有这些值都是“内联”的,就像在这个例子中一样:http ://demo.atk4.com/demo.html?t=14
我想首先知道如何在每个值上添加换行符,然后,如何通过在特定选项值(逻辑分组)之间添加某种 < p> </ p> 来模拟组。
提前致谢!
我正在构建一个“自助菜单列表”表单,其中有很多“菜单”单选按钮选项。但是我注意到所有这些值都是“内联”的,就像在这个例子中一样:http ://demo.atk4.com/demo.html?t=14
我想首先知道如何在每个值上添加换行符,然后,如何通过在特定选项值(逻辑分组)之间添加某种 < p> </ p> 来模拟组。
提前致谢!
我能想到两种解决方案。
看看这里的例子以获得一些灵感:
http://agiletoolkit.org/doc/grid/columns
首先,创建一个没有标记的表单:
$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”。
在此示例中,您可以添加一堆单选按钮元素并将它们绑定到一个表单。我在这里也使用了“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();
}