【问题标题】:How to have one form with multiple actions如何让一个表单具有多个操作
【发布时间】:2019-05-12 11:51:07
【问题描述】:

我有一个疑问,是否有可能拥有一个具有多个操作的表单(查看页面),例如我想在同一个查看页面上保存、更新和删除..如果用户单击任何按钮,那么它必须可以调用必要的控制器功能吗??

【问题讨论】:

    标签: forms codeigniter model-view-controller view


    【解决方案1】:

    你有一些方法可以做到,但它们都需要一些 javascript 代码。

    我能想到的最简单的方法是在单击每个按钮时动态更改表单操作(类型为button,而不是默认的submit),然后提交表单。

    例子:

    <form id="myform" name="myform" method="post" action="">
      <input id="myinput" name="myinput" type="text"/>
      [..]other inputs[/..]
    
      <button type="button" onClick="deleteAction()">DELETE</button>
      <button type="button" onClick="updateAction()">UPDATE</button>
      <button type="button" onClick="saveAction()">SAVE</button>
    </form>
    

    JS函数在哪里:

    function deleteAction() {
        changeActionAndSubmit('/action/delete');
    }
    
    function updateAction() {
        changeActionAndSubmit('/action/update');
    }
    
    function saveAction() {
        changeActionAndSubmit('/action/save');
    }
    
    function changeActionAndSubmit(action) {
        document.getElementById('myform').action = action;
        document.getElementById('myform').submit();
    }
    

    希望我得到您的怀疑,这可以解决您的问题 :)

    【讨论】:

    • changeActionAndSubmit('/action/delete');这里的动作是控制器名称???
    • @dhara 是的,完全正确
    【解决方案2】:

    实现相同目标的非 JS 方法是使用每个按钮上的名称/值参数让您的后端决定要做什么。

    例子

    <?php echo form_open('controller/method'); ?>
    
    // form fields go here
    
    <button type="submit" name="add" value="y">press to add</button>
    <button type="submit" name="update" value="y">press to update</button>
    <button type="submit" name="delete" value="y">press to delete</button>
    
    <?php echo form_close(); ?>
    

    然后,在您的控制器上,验证用户输入后,您可以通过读取按钮向控制器发送的有关自身的信息来确定按下了哪个按钮(我假设您使用 CI 的表单助手)

    if ($this->input->post('add') == 'y')
    {
      // the user wants to add
    }
    
    else if ($this->input->post('update') == 'y')
    {
      // user wants to update
    }
    
    else
    {
      // user wants to delete
    }
    
    // rest of code goes here
    

    在每个if 结构上,您可以根据用户按下的按钮采取适当的操作

    【讨论】:

    • 它只是令人耳目一新;(
    • 好的,你需要向我们展示一些代码(至少,带有表单的视图和处理表单的控制器/方法)
    猜你喜欢
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多