2012-05-03 41 views
0

我有一個視圖,我想有3個按鈕;保存,保存&下一個,保存&上一個。保存按鈕是標準的提交類型按鈕,它的工作原理。其他兩個按鈕顯示爲按鈕,但不會執行任何操作。我寫了一個名爲save_move_next.js的文件來調用一個動作,並給這個按鈕一個id,並將所有適當的東西放在它們應該在的位置,但它沒有做任何事情。CakePHP按鈕不會直接查看「automagic」函數來做到這一點?

有沒有一些預先建立的方式來做到這一點?基本上,用戶點擊按鈕,控制器中的動作接管,保存信息然後移動到下一個項目。

會把它放在表單上修正問題嗎?或改變它,所以它看起來像:

$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.thtml中的頭:

echo $javascript->link('save_move_next'); 
+0

您運行的是什麼版本的CakePHP的? – Dave

+0

@Dave CakePHP 1.3 – Jonathan

+0

你想通過使用'submit'類型的按鈕來達到目的。通過HTML定義,提交按鈕將表單數據提交給表單的指定'action'屬性,沒有例外!你描述的內容需要「常規」按鈕(非提交)以及與之綁定的點擊事件,就像gvLearner在他的回答中所表明的那樣。 – Oldskool

回答

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

UPDATE

我給基於您正在使用的CakePHP 2.1 assumtion此解決方案。如果你使用的是CakePHP1.3,你可以從form參數中獲得按鈕細節。

您可以使用下面的代碼來實現。

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 
    } 
+0

你能舉個例子嗎? – Jonathan

+0

@Jonathan更新了ans – Saanch

+0

我需要添加更多的助手和/或組件嗎?這一切都會進入視圖或像js這樣的單獨文件嗎?不太熟悉使用ajax。 – Jonathan

相關問題