我将非MVC应用程序迁移到Laravel 4.2,并且我不确定完成此任务的最佳方法。我在这样的路线上创建了几个报告:
/reports/this_report
/reports/that_report
/reports/another_report
这些操作查询数据库,运行一堆计算,并生成一些html表和表单。
我现在需要添加的是这样一个页面:
/reports/dashboard
此仪表板页面应以浓缩格式显示所有3个报告的输出,每个报告都带有"单击以查看详细信息"将用户带到主报告页面的链接。
仪表板操作是否有办法调用每个报告操作,并将其输出用作仪表板视图中的数据?
答案 0 :(得分:0)
以下是一些关于如何执行此操作的代码。我不确定你是如何将所有内容都整理好的,所以你可能需要对此进行一些调整。
假设您有这样的仪表板路线。
Route::get('/reports/dashboard', DashboardController@showDashboard');
此路线应调用将进行处理的控制器方法。
class DashboardController extends BaseController
{
public function showDashboard()
{
return View::make('dashboard')->with(array(
'report1_data' => $this->getReport1Data(),
'report2_data' => $this->getReport2Data(),
'report3_data' => $this->getreport3Data()
));
}
public function getReport1Data() { //calculations, return array of results }
public function getReport2Data() { //calculations, return array of results }
public function getReport3Data() { //calculations, return array of results }
public function showThisReport()
{
$data = $this->getReport1Data();
return View::make('report')->with(array('data' => $data));
}
public function showThatReport()
{
$data = $this->getReport2Data();
return View::make('report')->with(array('data' => $data));
}
public function showAnotherReport()
{
$data = $this->getReport3Data();
return View::make('report')->with(array('data' => $data));
}
}
因此,此仪表板方法将调用将查询数据库并计算报告的其他方法(您还将包含在此控制器中)。
然后它返回包含所有数据的视图。视图将格式化数据并将其显示给用户。
现在,为了使您能够看到每个报告的详细视图,我建议添加更多方法和路线以显示详细视图。
Route::get('/reports/this_report', 'DashboardController@showThisReport');
Route::get('/reports/that_report', 'DashboardController@showThatReport');
Route::get('/reports/another_report', 'DashboardController@showAnotherReport');
我希望这有帮助!祝你好运。