通过href或按钮向php函数发送固定参数

时间:2014-06-03 11:25:42

标签: php laravel-4

我有一个日历,这是一个数组,我已经填充了日期,这些日期是关键字,并且报告是相应的值(无论是根据日,周或月完成的)。

这包含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发送参数,以增加一个月。

所以我的问题是如何将数据发送到不涉及使用路由的函数,或者它是唯一的方法?

1 个答案:

答案 0 :(得分:0)

您可以在PopulateDatesWithReports函数中调用MakeCalendar函数,将$ monthNumber作为这样的参数发送,

$this->MakeCalendar($monthNumber);

只要您将$ monthNumber参数发送到PopulateDatesWithReports函数,就可以随时执行此操作。

所以你的href就像是

http://www.example.com/calender/MakeFullCalendar/1/99