0

3つのボタンが欲しいビューがあります。保存、保存して次へ、保存して前へ。保存ボタンは標準の送信タイプボタンであり、機能します。他の2つのボタンはボタンとして表示されますが、アクションは実行されません。アクションを呼び出すために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呼び出しとして他の2つのボタンを作成し、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;
        });

アップデート

私はあなたがCakePHP2.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 に答える