Php CConsoleApplication及其行为没有名为“的方法或闭包”;getViewRenderer";

Php CConsoleApplication及其行为没有名为“的方法或闭包”;getViewRenderer";,php,yii,console-application,centos5,Php,Yii,Console Application,Centos5,我试图呈现一个页面,并将其转换为pdf格式,然后将其作为电子邮件发送。我得到以下错误 ./yiic weeklystatusreport exception 'CException' with message 'CConsoleApplication and its behaviors do not have a method or closure named "getWidgetFactory".' in /opt/yii-1.1.14.f0fee9/framework/base/CComp

我试图呈现一个页面,并将其转换为pdf格式,然后将其作为电子邮件发送。我得到以下错误

./yiic weeklystatusreport 
exception 'CException' with message 'CConsoleApplication and its behaviors do not have a method or closure named "getWidgetFactory".' in /opt/yii-1.1.14.f0fee9/framework/base/CComponent.php:266
Stack trace:
#0 [internal function]: CComponent->__call('getWidgetFactor...', Array)
#1 /opt/yii-1.1.14.f0fee9/framework/web/CBaseController.php(146): CConsoleApplication->getWidgetFactory()
#2 /opt/yii-1.1.14.f0fee9/framework/web/CBaseController.php(172): CBaseController->createWidget('zii.widgets.gri...', Array)
#3 /opt/paradox/protected/views/viewWebprojectreport/weekly_status_graph.php(198): CBaseController->widget('zii.widgets.gri...', Array)
#4 /opt/yii-1.1.14.f0fee9/framework/web/CBaseController.php(126): require('/opt/paradox/pr...')
#5 /opt/paradox/protected/commands/WeeklystatusreportCommand.php(201): CBaseController->renderInternal('/opt/paradox/pr...', Array, true)
#6 /opt/yii-1.1.14.f0fee9/framework/console/CConsoleCommandRunner.php(71): WeeklystatusreportCommand->run(Array)
#7 /opt/yii-1.1.14.f0fee9/framework/console/CConsoleApplication.php(92): CConsoleCommandRunner->run(Array)
#8 /opt/yii-1.1.14.f0fee9/framework/base/CApplication.php(180): CConsoleApplication->processRequest()
#9 /opt/yii-1.1.14.f0fee9/framework/yiic.php(33): CApplication->run()
#10 /opt/paradox/protected/yiic.php(7): require_once('/opt/yii-1.1.14...')
#11 /opt/paradox/protected/yiic(4): require_once('/opt/paradox/pr...')
在控制台应用程序中,我有以下代码

public function run($args)
    {
        $graph = 4;
        $graphs = array();
        $arr = array();
        $where = array(
                array("PROJCODE"=>array("Woking","Cairo"),"MC"=>array("MC")),
                array("PROJCODE"=>array("Houston","Cairo"),"MC"=>array("MC")),
                array("PROJCODE"=>array("Jakarta"),"MC"=>array("MC")),
                array("MC"=>array("P")),
        );
        $title = array(
                array("Woking & Cairo"),
                array("Houston & Cairo"),
                array("Jakarta"),
                array(""),
        );



        for ($i = 0; $i < $graph; $i++) {

            $model=new ViewWebprojectreport('weeklystatus');
            $model->unsetAttributes();
            $dataProvider = $model->weeklystatus($where[$i] );
            $dataProvider->pagination->pageSize = $model->count();
            //print_r($dataProvider);
            $blank = array();
            foreach ($dataProvider->getData() as $data) {
                $blank[] = $data;
            }

            $count = 0;
            $command = array();

            foreach ($dataProvider->getData() as $data) {
                $count++;
                $command[$count]["PROJECT"] = $data->PROJECT;
                $command[$count]["StartDATE"] = $data-> StartDATE;
                $command[$count]["ProjectEndDate"] = $data-> ProjectEndDate;
                $command[$count]["PERCENT"] = $data-> PERCENT;
                $command[$count]["MC"] = $data-> MC;
                $command[$count]["MC"] = $data->ActualEndDate;

                $count++;
            }
            $totalprojects = $count;

            $cat = array();
            $totalLength = array();
            $schedule = array();
            $complete = array();
            $planned = array();

            $totalprojects = count($command);
            $scrollcount = 0;
            if(count($command)>20)
                $scrollcount = count($command) - 10; // set scrollbar depending on records returned

            foreach ($command as $key => $value) {
                $cat[] = $value['PROJECT'];
                $date_from = (strtotime($value['StartDATE']) )*1000;
                $date_to = (strtotime($value['ProjectEndDate']) + 1*86400)*1000;


                if($value['MC'] == -1)
                    $totalLength[] = array("low"=>$date_from,"high"=>$date_to, "color"=>"#2f7ed8");
                elseif($value['MC'] == 0)
                $totalLength[] = array("low"=>$date_from,"high"=>$date_to, "color"=>"#0d233a");
                else
                    $totalLength[] = array($date_from,$date_to);

                $today = time();
                $startdate = strtotime($value['StartDATE']);
                $enddate = strtotime($value['ProjectEndDate']);


                if( $value['ProjectEndDate'] == ""){
                    $enddate = $startdate;
                }

                $diff_total = $enddate - $startdate;
                $diff_today = $today - $startdate;

                $schedule[] = array( $date_from,  $today*1000 );

                // work out number of days completed by percent complete of project
                $percentage_to_get = round((float)$value['PERCENT'],2);
                $percentage_of_days =  ((int)$value['PERCENT'] == 0)? 0 : floor($diff_total/100*$percentage_to_get);
                $percentComplete = (($startdate + $percentage_of_days)+ 1*86400)*1000;

                $complete[] = (float) $value['PERCENT'];
                $planned[]=($diff_today != 0 && $diff_total != 0) ?  ( ((($today - $startdate) /  ($enddate - $startdate))*100) > 100 ) ? 100 : (($today - $startdate) /  ($enddate - $startdate))*100 :  0;

            }

            $arr[] = array(
                    //'cat'=>$cat,
                    //"data"=>$totalLength,
                    //"complete"=>$complete,
                    //"planned"=>$planned,
                    //"totalprojects"=>$count,
                    //"title"=>$title[$i],
                    "key"=>$i,
                    "dataProvider"=>$dataProvider
            );
            $rotation = (count($command) < 5) ? 0 : -315;
            $json = json_encode(array(
                    "chart"=>array(
                            "type"=>'column',
                            "width"=>1000,
                            "height"=>350
                    ),
                    "title"=>array(
                            "text"=>$title[$i]
                    ),
                    "xAxis"=>array(
                            "categories"=>$cat,
                            "labels"=>array(
                                    "rotation"=>$rotation,
                                    "align"=>'left',
                                    "style"=>array(
                                            "fontSize"=>'8px',
                                            "fontFamily"=>'Verdana, sans-serif',
                                            "width"=>"75px"
                                    )
                            )
                    ),
                    "yAxis"=>array(
                            "min"=>0,
                            "max"=>100,
                            "title"=>array(
                                    "text"=>'% COMPLETE'
                            ),
                            "tickInterval"=>10
                    ),
                    "plotOptions"=>array(
                            "column"=>array(
                                    "pointPadding"=> 0,
                                    "borderWidth"=> 0
                            )
                    ),
                    "legend"=>array(
                            "enabled"=>true,
                            "verticalAlign"=>'middle',
                            "align"=>'right',
                            //"floating"=> true
                    ),
                    "credits"=>array(
                            "enabled"=> false
                    ),
                    "series"=>array(
                            array(
                                    'name'=>'Planned',
                                    'data'=>$planned,
                                    'color'=> "rgb(91,155,213)"
                            ),
                            array(
                                    "name"=>'Actual',
                                    "data"=>$complete,
                                    "color"=>'rgb(237,125,49)'
                            )
                    )
            ));
            exec("pwd");

            $file = "/opt/paradox/protected/extensions/highcharts/exporting-server/php/php-batik/temp/$i.json";
            // Write the contents back to the file
            file_put_contents($file, $json);
            // generates images to use for weekly status report
            shell_exec("/usr/local/bin/phantomjs /opt/paradox/protected/extensions/highcharts/exporting-server/phantomjs/highcharts-convert.js -infile protected/extensions/highcharts/exporting-server/php/php-batik/temp/${i}.json -outfile images/$i.png -constr Chart");
    }

    //$this->renderPartial('weekly_status_graph', array("arr"=>$arr));
    //exit();
    $filename = 'weeklystatusreport_'.date('Y-m-d').'.pdf';

    Yii::import('application.extensions.pdfable.WkHtmlToPdf');


    $pdf = new WkHtmlToPdf(array(
            'no-outline',         // Make Chrome not complain
            'margin-top'    => 10,
            'margin-right'  => 5,
            'margin-bottom' => 10,
            'margin-left'   => 5,
    ));
    $pdf->setOptions(array(
            'orientation' => 'landscape'
    ));

    $ccc = new CController('context');
    $html = $ccc->renderFile('/opt/paradox/protected/views/viewWebprojectreport/weekly_status_graph.php', array("arr"=>$arr), true);

    // Add a HTML file, a HTML string or a page from a URL
    $pdf->addPage($html);


    // Add a cover (same sources as above are possible)
    //$pdf->addCover('mycover.html');

    // Add a Table of contents
    //$pdf->addToc();

    // Save the PDF

    $pdf->saveAs("/tmp/$filename");
}
公共函数运行($args)
{
$graph=4;
$graphs=array();
$arr=array();
$where=数组(
数组(“PROJCODE”=>数组(“Woking”、“Cairo”),“MC”=>数组(“MC”),
数组(“PROJCODE”=>数组(“休斯顿”、“开罗”)、“MC”=>数组(“MC”),
数组(“PROJCODE”=>array(“Jakarta”),“MC”=>array(“MC”),
数组(“MC”=>数组(“P”),
);
$title=数组(
阵列(“沃金和开罗”),
阵列(“休斯顿和开罗”),
阵列(“雅加达”),
数组(“”),
);
对于($i=0;$i<$graph;$i++){
$model=新的ViewWebprojectreport(“weeklystatus”);
$model->unsetAttributes();
$dataProvider=$model->weeklystatus($where[$i]);
$dataProvider->pagination->pageSize=$model->count();
//打印(数据提供者);
$blank=array();
foreach($dataProvider->getData()作为$data){
$blank[]=$data;
}
$count=0;
$command=array();
foreach($dataProvider->getData()作为$data){
$count++;
$command[$count][“项目”]=$data->PROJECT;
$command[$count][“StartDATE”]=$data->StartDATE;
$command[$count][“ProjectEndDate”]=$data->ProjectEndDate;
$command[$count][“百分比”]=$data->PERCENT;
$command[$count][“MC”]=$data->MC;
$command[$count][“MC”]=$data->ActualEndDate;
$count++;
}
$totalprojects=$count;
$cat=array();
$totalLength=数组();
$schedule=array();
$complete=array();
$planned=array();
$totalprojects=count($command);
$scrollcount=0;
如果(计数($command)>20)
$scrollcount=count($command)-10;//根据返回的记录设置滚动条
foreach($key=>$value的命令){
$cat[]=$value['PROJECT'];
$date_from=(strottime($value['StartDATE'))*1000;
$date_to=(strotime($value['ProjectEndDate'])+1*86400)*1000;
如果($value['MC']=-1)
$totalLength[]=数组(“低”=>$date\u从,“高”=>$date\u到,“颜色”=>“#2f7ed8”);
elseif($value['MC']==0)
$totalLength[]=数组(“低”=>$date\u从,“高”=>$date\u到,“颜色”=>0d23a”);
其他的
$totalLength[]=数组($date\u from,$date\u to);
$today=时间();
$startdate=strottime($value['startdate']);
$enddate=strottime($value['ProjectEndDate']);
如果($value['ProjectEndDate']==“”){
$enddate=$startdate;
}
$diff_total=$enddate-$startdate;
$diff_today=$today-$startdate;
$schedule[]=数组($date_from,$today*1000);
//按项目完成百分比计算完成天数
$percentage_to_get=round((float)$value['PERCENT',2);
$percentage_of_days=((int)$value['PERCENT']==0)?0:地板($diff_total/100*$percentage_to_get);
$percentComplete=($startdate+$percentage_of_days)+1*86400)*1000;
$complete[]=(浮动)$value['PERCENT'];
$planned[]=($diff_today!=0&$diff_total!=0)(($today-$startdate)/($enddate-$startdate))*100>100:($today-$startdate)/($enddate-$startdate))*100:0;
}
$arr[]=数组(
//“猫”=>$cat,
//“数据”=>$totalLength,
//“完成”=>$complete,
//“计划”=>计划的$,
//“totalprojects”=>count美元,
//“title”=>$title[$i],
“key”=>i美元,
“dataProvider”=>$dataProvider
);
$rotation=(计数($command)<5)?0:-315;
$json=json_编码(数组(
“图表”=>数组(
“类型”=>“列”,
“宽度”=>1000,
“高度”=>350
),
“title”=>数组(
“文本”=>$title[$i]
),
“xAxis”=>数组(
“类别”=>$cat,
“标签”=>数组(
“旋转”=>$rotation,
“对齐”=>“左”,
“样式”=>数组(
“fontSize”=>“8px”,
“fontFamily”=>“Verdana,无衬线”,
“宽度”=>“75px”
)
)
),
“yAxis”=>数组(
“最小”=>0,
“最大”=>100,
“title”=>数组(
“文本”=>“%COMPLETE”
),
“滴答声间隔”=>10
),
“绘图选项”=>阵列(
“列”=>数组(
“点填充”=>0,
“边框宽度”=>0
)
),
“图例”=>数组(
“已启用”=>true,