0

我有一个我想要 3 个按钮的视图;保存,保存和下一个,保存和上一个。保存按钮是标准的提交类型按钮,它可以工作。其他两个按钮显示为按钮,但不会执行任何操作。我编写了一个名为 save_move_next.js 的文件来调用一个动作,并给按钮一个 id 并将所有适当的东西放在它们应该放在的位置,但它没有做任何事情。

有一些预先构建的方法可以做到这一点吗?基本上,用户单击按钮,控制器中的操作接管,保存信息然后移动到下一个项目。

将它放在表格上方会解决问题吗?或更改它,使其看起来像:

$this->Form->submit('Button text', array(some controller, action);
$this->Form->submit('Button text', array(some controller, action);
$this->Form->submit('Button text', array(some controller, action);
$this->Form->end();

部分视图:

<?php echo $this->Form->end(__('Submit', true));?>
<?php echo $this->Form->button('Save and next drug', array('type'=>'button','id'=>'save_move_next')); ?>

JS函数:

$(document).ready(function(){

    $("#save_move_next").click(function(){
        var drug_id = $(this).val();
        if(drug_id.length > 0)
        {
            window.location = "<?php echo Router::url(array('controller' => 'french_translations', 'action' => 'next'), true) ?>/" + drug_id;
        }
    });

});

在 default.ctp 的头中:

echo $javascript->link('save_move_next');
4

2 回答 2

1

Cakephp 无法识别提交按钮 ID。你可以做的是将另外两个按钮作为ajax调用并将url更改为不同的方法并在那里编写你的逻辑。

    <a href="#" id="saveNextBtn">Save & Next</a>


    jQuery("#saveNextBtn").bind('submit', function(event) {
            jQuery.ajax({
                beforeSend : function(XMLHttpRequest) {
                    jQuery("#sending").show();
                },
                data : jQuery("#saveNextBtn").closest("form").serialize(),
                dataType : "html",
                success : function(data) {
                    jQuery("#success").html(data);
                    jQuery("#sending").hide();
                },
                type : "post",
                url : "\/AppName\/ControllerName\/Method"
            });
            return false;
        });

更新

我根据您使用的是 CakePHP 2.1 的假设给出了这个解决方案。如果您使用的是 CakePHP1.3,您可以从表单参数中获取按钮详细信息。

您可以使用以下代码来实现这一点。

    echo $this->Form->submit('Save', array('name'=>'save');
    echo $this->Form->submit('Save & Next', array('name'=>'savenext');

    if (isset($this->params['form']['submit']) && $this->params['form']['submit'] == "Save") {
      // Save button Clicked
    }
于 2012-05-03T16:05:05.643 回答
0

我在 Saanch 的回答的帮助下弄清楚了这一点。如果正在使用 cakephp 1.3,您可以确定单击了哪个按钮并简单地重定向到所需的视图。gvLearner 为我指出了正确的方向,但他提供的代码存在一些问题。

视图中的按钮:

echo $form->submit('Save', array('name'=>'save');
echo $form->submit('Save & Next', array('name'=>'saveNext');

确定按钮单击和重定向的代码:

if (isset($this->params['form']['name-you-gave-the-button-in-the-view']) && $this->params['form']['name-you-gave-the-button-in-the-view'] == 'name-you-gave-the-button-in-the-view') {
  // The button was clicked and you can redirect or whatever here.
}
于 2012-05-31T21:20:34.263 回答