ฉันกำลังพยายามส่งแบบฟอร์มที่ซ่อนอยู่ทุกครั้งที่โหลดเพจ ซึ่งฉันได้สร้างฟังก์ชันในคอนโทรลเลอร์ของฉันแล้ว ปัญหาของฉันคือฉันไม่ต้องการออกจากมุมมองปัจจุบัน แต่ฉันไม่สามารถเปลี่ยนเส้นทางไปยังมุมมองที่ฉันต้องการคงอยู่ได้เพราะนั่นจะสร้างการวนซ้ำของการโหลดเพจอย่างต่อเนื่องโดยเรียกใช้ฟังก์ชันของฉันเมื่อการโหลดเสร็จสิ้นแล้ว เปลี่ยนเส้นทางอีกครั้ง ดังนั้น ฉันจึงต้องการเรียกใช้ฟังก์ชันนี้โดยไม่เปลี่ยนเส้นทางไปยังมุมมองก่อนหน้า แต่ไม่แสดงมุมมองใหม่เช่นกัน ซึ่งฉันใช้สิ่งต่อไปนี้:
$this->autoRender = false;
$this->layout = false;
$this->render(false);
อย่างไรก็ตาม ดูเหมือนว่าบรรทัดเหล่านี้จะไม่ทำงานสำหรับฉัน เนื่องจากการดำเนินการยังคงถูกเปลี่ยนเส้นทางไปยังฟังก์ชันนี้ โดยพยายามแสดงมุมมองที่ไม่มีอยู่ แทนที่จะอยู่ในมุมมองก่อนหน้า ด้วยเหตุนี้ ฉันต้องการทราบว่ามีทางเลือกอื่นในการเรียกใช้ฟังก์ชันหนึ่งในคอนโทรลเลอร์ของฉันหรือไม่ แต่ยังคงอยู่ในหน้าที่ฉันอยู่ (ไม่ใช่โดยการเปลี่ยนเส้นทางเนื่องจากลักษณะการวนซ้ำ) ในกรณีที่ช่วยได้ ฉันกำลังเพิ่มโค้ดที่ฉันมีสำหรับการดำเนินการนี้:
นี่คือส่วนหนึ่งของมุมมองที่ฉันต้องการให้แสดงผลต่อไปโดยที่ฉันมีฟังก์ชันที่เกี่ยวข้องกับแบบฟอร์มที่ซ่อนอยู่
<?= $this->Form->create('Save data', array('url'=>'/exportations/save_data/'.$id, 'enctype' => 'multipart/form-data', 'method' => 'post', 'id' => 'data'))?>
<input type="hidden" id="svgGraph" />
<div class="" id="cont" style="display:none;"></div>
<?=$this->Form->end()?>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
var chart = Highcharts.chart( // code to create graph
);
var svg = chart.getSVG();
$("#svg1").val(svg1);
});
$(document).ready(function () {
document.getElementById('data').submit();
});
</script>
นี่คือฟังก์ชัน '/exportations/save_data/' คอนโทรลเลอร์ปัจจุบันของฉัน:
public function save_data(){
$this->autoRender = false;
$this->layout = false;
$this->render(false);
if($this->request->is('post')) {
$data = $this->request->data;
$exportation = $this->Exportation->save($data);
}
return;
}
ในปัจจุบัน ด้วยรหัสนี้ ข้อมูลจะถูกจัดเก็บได้สำเร็จ แต่ผู้ใช้กลับกลายเป็นมุมมองที่ว่างเปล่า เนื่องจากตัวควบคุมพยายามแสดงมุมมอง save_data