【问题标题】:Not-in-the-same-line radiobutton values不在同一行的单选按钮值
【发布时间】:2011-09-21 21:44:52
【问题描述】:

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

首先我想知道如何在每个值上添加换行符,然后,如何通过在特定选项值(逻辑分组)之间添加某种

来模拟组)。

提前致谢!

【问题讨论】:

    标签: forms radio-button atk4


    【解决方案1】:

    我能想到两种解决方案。

    查看此处的示例以获得一些灵感:

    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();
    }
    

    【讨论】:

    • 我选择了解决方案#1,它部分工作:虽然最初它工作并在发布后显示菜单 ID,但当我扩展它以使用菜单名称本身作为我开始得到的键时发布时为零值。这是代码:$grid-&gt;addColumn('template','Menu')-&gt;setTemplate('&lt;input type=\'radio\' name=\'selection\' value="&lt;?$name?&gt;"/&gt; &lt;?$name?&gt;');
    • 好的,知道了。问题是与加号连接,而这实际上是 PHP 代码,所以它需要一个点。这现在工作得很好:$grid-&gt;addColumn('template','Menu')-&gt;setTemplate('&lt;input type=\'radio\' name=\'selection\' value="&lt;?$value?&gt;"/&gt; &lt;?$value?&gt;'); if($form-&gt;isSubmitted()){ $this-&gt;js()-&gt;univ()-&gt;successMessage('Hoy: &lt;b&gt;'.$_POST['selection'].'&lt;/b&gt;')-&gt;execute(); }
    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 2017-05-09
    • 2023-04-08
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多