我已經使用jpGraph一個公平的位(從服務器端生成圖表),並開發了一些視圖動作助手,爲我做了所有的辛苦工作。因此,我調用具有幾個基本的參數(例如標題,寬度,高度)和數據(從控制器傳遞)的陣列的助手和輔助沒有休息。它使得一個很好的乾淨可讀的.phtml文件,特別是當每頁有多個圖形時。
我還沒有看到任何Zend_組件會爲你做這些事情。
[更新11月12日:加入樣品下面的代碼]
class Zend_View_Helper_RenderAverageDollarSaleGraph
{
protected $fileName = 'averageDollarSale.jpg';
//-------------------------------------------------------------------------
/*! \brief
\param
\return
*/
function renderAverageDollarSaleGraph($monthSales)
{
$labels = array('', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
$startDate = date('Ym', mktime(0, 0, 0, date('m') - 1, 1, date('Y') - 2));
$result = $label = $csimLabels = array();
foreach ($monthSales as $row)
{
$date = sprintf('%d%02d', $row['paid_year'], $row['paid_month']);
if ($date < $startDate) continue;
$label[]= $labels[ $row['paid_month'] ] . "\n" . substr($row['paid_year'], -2);
$monthName = $row['paid_month'] == 1 ? substr($row['paid_year'], -2) : $labels[ $row['paid_month' ] ];
$result[] = $row['transactions'] <= 0 ? NULL : ($row['total']/$row['transactions']);
$csimLabels[]= $labels[ $row['paid_month'] ] . ' $%0.2f';
}
$graph = $this->createGraph();
$graph->SetScale("intint");
$graph->title->Set('Average Dollar Sale');
$graph->xgrid->Show(true);
$graph->ygrid->Show(true);
$p1 = new LinePlot(array_values($result));
$p1->mark->SetType(MARK_CIRCLE);
$p1->mark->SetColor('[email protected]');
$p1->SetCSIMTargets(array_fill(0, count($csimLabels), '#'), $csimLabels);
$graph->Add($p1);
$graph->xaxis->SetTickLabels($label);
$graph->Stroke(SITE_VAR_PATH . $this->fileName);
}
}
上面是削減版本:完整版檢查文件上的時間戳和僅當數據超過一日齡再生。
嘿史蒂夫,我想知道你可以張貼一些代碼?從你的視圖動作幫手,因爲我有興趣看到你的實施。 – emeraldjava 2009-11-05 11:17:58
按要求添加了代碼。如果你需要更多,請告訴我 – Steve 2009-11-12 08:01:09