我正在尝试在服务器上保存多个图像。让我们从头开始:
//I use this function for testing
function testSave(){
$this->_renderChart(156);
}
//This function takes chart_id as a parameter to render a proper chart.
function _renderChart($chart_id = null){
if(!$chart_id)
return false;
$chartFilterList = $this->getChartFilterListFromId($chart_id);
$this->loadChartFromId($chart_id, $chartFilterList);
$this->layout = 'analytics\chart_one.ctp';
}
上述函数的视图包含渲染图表所需的所有脚本。这是将渲染图表转换为base64string并保存它的部分:
//../views/layouts/analytics/chart_one.ctp
<script type="text/javascript">
$(document).ready(function(){
saveChartAsImage('#chart1');
});
</script>
以上功能的正文:
function saveChartAsImage(div){
var base64string = $(div).jqplotToImageStr();
$.ajax({
url: 'saveImage',
type: "POST",
dataType: "html",
data:"data=" + base64string
});
}
}
这甚至都没有成功。我在这里做错了吗?
答案 0 :(得分:0)
如果这些函数是控制器操作,您可以在控制器的$this->response->body()
回调中使用afterFilter()
来获取响应内容并将其保存到文件中。如果这些是帮助函数,您可以使用afterLayout()
afterRender()
或$this->_View->Blocks->get('content');
回调中的内容
答案 1 :(得分:0)
我建议创建一个行为,然后添加操作 beforeValidate();
之后,制定调用特定操作所需的条件(在您的问题中列出)。
示例:
app/Model/Behavior/ChartBehavior.php
class ChartBehavior extends ModelBehavior {
// if necessary, create a setup action
public function setup(Model $Model, $settings = array()) { }
public function upload(Model $Model) {
// use the $Model->data to see all information from your form
debug($Mode->data);
// now call your functions below to upload
}
public function line_chart($chart_id = null){
//magic...
}
public function bar_chart($chart_id = null){
//magic...
}
public function pie_chart($chart_id = null){
//magic...
}
我希望它可以帮到你。