我有一个日历,这是一个数组,我已经填充了日期,这些日期是关键字,并且报告是相应的值(无论是根据日,周或月完成的)。
这包含3种方法MakeCalendar()
,PopulateDatesWithReports()
和MakeFullCalendar()
。
我知道我需要href
个按钮,例如上个月和下个月,要将变量发送到我的MakeCalendar()
和MakeFullCalendar()
个功能,例如前几个月为-1,下个月为+1。
这些是我的职能......
public function MakeCalendar(/*$monthNumber*/)
{
// $month = $monthNumber;
$month = date("m");
$year = date("Y");
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$dates_month=array();
for($i=1;$i<=$num;$i++)
{
$mktime=mktime(0,0,0,$month,$i,$year);
$date=date("Y-m-d",$mktime);
$dates_month[$i]=$date;
}
return $dates_month;
}
public function PopulateDatesWithReports($parkId = null)
{
$completeCalendar = array();
$calendar = $this->MakeCalendar();
$reports = DB::table('ReportRecord')
->where('ParkId','=', $parkId)
->orderBy('DateCompleted', 'ASC')
->get();
foreach ($calendar as $key => $date)
{
foreach ($reports as $report)
{
if ($report->DateCompleted == $date)
{
$completeCalendar[$date][] = $report->ReportNameId;
}
}
}
return $completeCalendar;
}
public function MakeFullCalendar(/*$monthNumber,*/$parkId = null)
{
$reportdates = $this->PopulateDatesWithReports($parkId);
$reportcounter = 0;
$weekreportcounter = 0;
$monthreportcounter = 0;
$weeklyreports = array();
$monthlyreports = array();
$month = date("m");
$year = date("Y");
$reports = DB::table('ReportRecord')
->where('ParkId','=', $parkId)
->orderBy('DateCompleted', 'ASC')
->get();
$num = cal_days_in_month(CAL_GREGORIAN, $month, $year);
$dates_month_with_reports=array();
for($i=1;$i<=$num;$i++)
{
$mktime=mktime(0,0,0,$month,$i,$year);
$date=date("Y-m-d",$mktime);
$dates_month_with_reports[$date]=$date;
}
foreach ($dates_month_with_reports as $cal)
{
foreach ($reportdates as $key => $rdate)
{
if ($key == $cal)
{
$dates_month_with_reports[$cal] = $rdate;
}
}
}
$daycounter = 0;
foreach ($dates_month_with_reports as $key => $value)
{
$daycounter++;
if (! is_array($value))
{
$dates_month_with_reports[$key] = "No reports done today";
}
else {
foreach ($value as $int => $val)
{
if ($val == 1 || $val == 3 || $val == 4 || $val == 5)
{
$reportcounter++;
if ($reportcounter >= 4)
{
$dates_month_with_reports[$key] = "Daily Reports are done";
}
else {
$dates_month_with_reports[$key] = "Daily Repoorts are missing";
}
}
elseif ($val == 41 || $val == 10 || $val == 9 || $val == 8 || $val == 7 || $val == 6 || $val == 2)
{
$weeklyreports[$key][] = $val;
}
elseif($val == 42 || $val == 22 || $val == 21 || $val == 20 || $val == 18 || $val == 17 || $val == 16 || $val == 15 || $val == 14 || $val == 13 || $val == 12 )
{
$monthlyreports[$key][] = $val;
}
}
}
if ($daycounter == 7||$daycounter == 14||$daycounter == 21||$daycounter == 28)
{
foreach ($weeklyreports as $index => $val)
{
foreach ($val as $va)
{
$weekreportcounter++;
}
}
if ($weekreportcounter >= 7)
{
$dates_month_with_reports[$key] = "Weekly Reports done";
}
else {
$dates_month_with_reports[$key] = "Weekly Reports Not done they only achieved ".$weekreportcounter."/7";
}
}
if ($daycounter == count($dates_month_with_reports))
{
foreach ($monthlyreports as $index => $val)
{
foreach ($val as $va)
{
$monthreportcounter++;
}
}
if ($monthreportcounter >= 11)
{
$dates_month_with_reports[$key] = "Monthly Reports done";
}
else {
$dates_month_with_reports[$key] = "Monthly Reports Not done they only achieved ".$monthreportcounter."/11";
}
}
}
return $dates_month_with_reports;
}
我正在使用laravel 4,我知道我需要使用MakeCalendar()
输入向MakeFullCalnedar()
和href
发送参数,以增加一个月。
所以我的问题是如何将数据发送到不涉及使用路由的函数,或者它是唯一的方法?
答案 0 :(得分:0)
您可以在PopulateDatesWithReports函数中调用MakeCalendar函数,将$ monthNumber作为这样的参数发送,
$this->MakeCalendar($monthNumber);
只要您将$ monthNumber参数发送到PopulateDatesWithReports函数,就可以随时执行此操作。
所以你的href就像是
http://www.example.com/calender/MakeFullCalendar/1/99