0

サーバーに複数の画像を保存しようとしています。最初から始めましょう:

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

}

これは機能していません。ここで何か間違ったことをしていますか?

4

2 に答える 2

0

これらの関数がコントローラー アクションである場合$this->response->body()、コントローラーのafterFilter()コールバックで使用して応答コンテンツを取得し、ファイルに保存できます。これらがヘルパー関数である場合、ヘルパーのコンテンツafterLayout()またはafterRender()コールバックを使用して取得できます$this->_View->Blocks->get('content');

于 2012-12-25T12:39:23.023 に答える
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...
}

お役に立てば幸いです。

于 2012-12-26T16:46:42.110 に答える