Я пытаюсь отправить скрытую форму всякий раз, когда загружается страница, для которой я создал функцию в своем контроллере. Моя проблема в том, что я не хочу покидать текущее представление, но я не могу перенаправить на представление, в котором хочу остаться, потому что это создало бы постоянный цикл загрузки страницы, вызов моей функции после завершения загрузки, а затем снова переадресация. Поэтому я хотел вызвать эту функцию без перенаправления на предыдущее представление, но и без рендеринга нового представления, для чего я использовал следующее:
$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.