2012-07-11 48 views
2

在我的CakePHP 1.3版本,我有兩個提交類型的圖像標記如下所述:CakePHP的提交圖像類型區分的保存,打印和保存

echo $form->submit('save-print.jpg' , array('name'=>'savenprint','value'=>"savenprint",'id'=>"savenprint")); 

echo $form->submit('save.jpg'); 

現在,我想在我的控制器識別,那哪個按鈕提交,是否「保存」或「打印&保存」

所以我已經申請name and value他們每個人,並在Chrome瀏覽器中,我得到的名稱和值對,而在Mozilla Firefox瀏覽器,我不得到一樣的。

任何想法,如何實現?或者我的代碼中有什麼錯誤或缺失。

最早的迴應將不勝感激。

謝謝!

+1

如何訪問控制器中的值?對我來說'$ this-> Form-> submit('Send it!',array('name'=>'send_test'))'並檢查控制器,如下所示:if(isset($ this-> params ['表單'] ['send_test'])){...'在Firefox中正常工作。 – pixelistik 2012-07-11 13:04:37

+0

@pixelistik:它不適用於圖像類型,返回像這樣的前例。 '[sbmtfrm_x] => 21 [sbmtfrm_y] => 15' – 2012-07-11 13:15:18

+0

您能否顯示視圖中的完整表單代碼以及相應的控制器代碼?在你的控制器動作中調試($ this-> params ['form'])'的輸出。 – pixelistik 2012-07-11 15:05:44

回答

1

表單應是這樣的:

echo $form->submit('save-print.jpg' , array('name'=>'savenprint','value'=>"save",'id'=>"savenprint")); 
echo $form->submit('save.jpg', array('name'=>'savenprint','value'=>"savenprint",'id'=>"savenprint")); 

在你的控制器使用方法:

if($this->data['ModelName']['sbmtfrm_x'] == 'save') 
{ 
    //Your save code here 
} 
else if($this->data['ModelName']['sbmtfrm_x'] == 'savenprint') 
{ 
    //Your savenprint code here 
} 

彼此的解決方案是讓一個隱藏字段,並設置它的價值的onclick的提交按鈕你jQuery的代碼,如下所示:

您的表單:

echo $form->submit('save-print.jpg' , array('name'=>'savenprint','value'=>"save",'id'=>"savenprint", 'class' => 'submitBtn'));  
echo $form->submit('save.jpg', array('name'=>'savenprint','value'=>"savenprint",'id'=>"savenprint", 'class' => 'submitBtn')); 
echo $form->hidden('sbmtValue', array('id' => 'sbmtValue', 'value' => '')); 

而jQuery代碼應該是這樣的:

$(document).ready(function(){ 
    $('.submitBtn').click(function(){ 
     $('#sbmtValue').val($(this).val()); 
    }); 
}); 

而在你的控制器的行動用途:

if($this->data['ModelName']['sbmtValue'] == 'save') 
{ 
    //Your save code here 
} 
else if($this->data['ModelName']['sbmtValue'] == 'savenprint') 
{ 
    //Your savenprint code here 
} 

希望它會爲你工作。