jpgraph を cakephp で動作させるのに苦労しました。「Graphs」というコントローラーがあり、ビューを表示するだけです。View/Graphs/index.ctp はとてもシンプルです:
echo "This is an image of my report";
echo "<img src='/<projectbase>/reports/index'></img>";
これは、ReportsController から情報を取得し、次に index と呼ばれるそのビューを取得しようとするものだと思います。私はReportsControllerを持っています:
<?php
class ReportsController extends AppController {
var $name = 'Reports';
function index() {
$this->layout='ajax';
}
}
レポートのインデックス ビューを呼び出すだけで、ajax 情報が返されます。次に、View/Reports/index.ctp を取得します。
App::import('Vendor', 'jpgraph/jpgraph');
App::import('Vendor', 'jpgraph/jpgraph_line');
// Some data
$ydata = array(11,3,8,12,5,1,9,13,5,7);
// Create the graph. These two calls are always required
$graph = new Graph(350,250);
$graph->SetScale('textlin');
// Create the linear plot
$lineplot=new LinePlot($ydata);
$lineplot->SetColor('blue');
// Add the plot to the graph
$graph->Add($lineplot);
// Display the graph
$graph->Stroke();
このリンクに基づいて、View/Graphs/index.ctp には、View/Reports/index.ctp を呼び出し、必要な jpgraph を返すように指示するイメージ リンクがあります。このコードを実行すると、「リソースはイメージとして解釈されましたが、MIME タイプ text/html で転送されました」というエラーが表示されます。リンク (localhost//reports/index) に直接アクセスすると、多くのファンキーな文字が吐き出され、PNG は最初に近いです。これはjpgraphのものから生成されたバイナリだと思うので、何かが生成されていると思いますが、正しくレンダリングされておらず、View/Graps/index.ctpに正しく取り込まれていません。
本当に小さなものを見逃していない限り、質問のリンクからこれを本質的に逐語的に盗んだので、面倒なことは機能していません。何か不足していますか?Cakephp でプロットする簡単な方法はありますか?
これに関する私の理論は、ビューからデータを取得する方法と、ケーキ php で App::Vendor() 呼び出しがどのように機能するかについて、何か奇妙なことがあるということです。jpgraphのcakephp構造の外を見るように画像に指示すると、問題なく生成されます。
echo "<img src='/jpgraph/Examples/example0.php'></img>";
このページに直接アクセスすると、問題なくグラフを生成できます。
助けてくれてありがとう!