Yii:使用Cjuidialog时出现奇怪的错误

时间:2014-02-03 00:32:32

标签: php yii

Yii 1.1.14 我正在创建一个应用程序,我想让弹出窗口选择一年,然后生成与所选年份相对应的报告文件。 在我有一年的固定变量之前对事情进行测试并且工作正常。

现在我尝试使用CJuiDialog来要求今年。

这是控制器动作:

    public function actionReporting()
    {
            $years = array();
            $yearstmp = Yii::app()->db->createCommand("SELECT DISTINCT year FROM {{planning}} ORDER BY year")->queryAll();
            foreach ($yearstmp as $yeartmp) {
                    $years[$yeartmp['year']] = $yeartmp['year'];
                    $lastyear = $yeartmp['year'];
            }

            if(isset($_POST['run'])) {
                    $this->actionXlsabsences($years[$_POST['year']]);
            } else {
                    $this->render(
                            'reporting',
                            array(
                                    'years'=>$years,
                                    'lastyear'=>$lastyear
                    ));
            }
    }

这就是观点:

<div class="reportingtest">
    <?php 
        $this->widget('zii.widgets.CMenu', array(
                    'items'=>array(
                            array('label'=>Yii::t('app','app.menu.reporting.planning.xlsabsence'), 'url'=>array('/planning/xlsAbsences')),
                    ),
            ));
    ?>
</div>


<div class="reporting">
    <?php 
        $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
                    'id'=>'mydialog',
                    'options'=>array(
                            'title'=>Yii::t('app','reporting.xlsabsence'),
                            'autoOpen'=>false,
                    ),
            ));
    ?>
    <div class="well">
            <?php echo CHtml::beginForm('','post'); ?>
            <table class="contentheader">
                    <tr>
                            <th><?php echo Yii::t('app','reporting.select.year'); ?></th>
                    </tr>
                    <tr>
                            <td><?php echo CHtml::DropDownList('year', $lastyear, $years, array('options'=>array($lastyear=>array('selected'=>true)) )); ?></td>
                    </tr>
            </table>
            <br />
            <?php echo CHtml::submitButton('Run', array('name' => 'run', 'class' => 'btn btn-success')); ?>
            <?php echo CHtml::endForm(); ?>
    </div>

    <?php 
            $this->endWidget('zii.widgets.jui.CJuiDialog');
            echo CHtml::link(Yii::t('app','app.menu.reporting.planning.xlsabsence'), '#', array(
                    'onclick'=>'$("#mydialog").dialog("open"); return false;',
            ));
    ?>
</div>

但这不起作用: div reportingtest中的旧链接不再起作用(页面未在....... / index.php找到?r = planning / xlsAbsences)。 但是行动xlsAbsences存在并且没有改变。 div报告中的新链接效果不佳 - 同样的错误。

这是最奇怪的事情: 如果在视图中,我删除了该行:

<?php echo CHtml::DropDownList ....

=&GT;旧的链接再次起作用。

但也许这是正常的,但我需要了解发生了什么事!

编辑: 我在应用程序日志中发现了以下内容:

2014/02/04 21:26:02 [error] [php] Invalid argument supplied for foreach() (C:\wamp\www\yii01\framework\web\helpers\CHtml.php:2325)
Stack trace:
#0 C:\wamp\www\yii01\framework\web\CBaseController.php(126): require()
#1 C:\wamp\www\yii01\framework\web\CBaseController.php(95): PlanningController->renderInternal()
#2 C:\wamp\www\yii01\framework\web\CController.php(869): PlanningController->renderFile()
#3 C:\wamp\www\yii01\framework\web\CController.php(782): PlanningController->renderPartial()
#4 C:\wamp\www\yii02\yiiars02\protected\controllers\PlanningController.php(632): PlanningController->render()
#5 C:\wamp\www\yii02\yiiars02\protected\controllers\PlanningController.php(318): PlanningController->actionXlsAbsences()
#6 C:\wamp\www\yii01\framework\web\actions\CInlineAction.php(49): PlanningController->actionReporting()
#7 C:\wamp\www\yii01\framework\web\CController.php(308): CInlineAction->runWithParams()
#8 C:\wamp\www\yii01\framework\web\filters\CFilterChain.php(133): PlanningController->runAction()
#9 C:\wamp\www\yii01\framework\web\filters\CFilter.php(40): CFilterChain->run()
#10 C:\wamp\www\yii01\framework\web\CController.php(1145): CAccessControlFilter->filter()
#11 C:\wamp\www\yii01\framework\web\filters\CInlineFilter.php(58): PlanningController->filterAccessControl()
#12 C:\wamp\www\yii01\framework\web\filters\CFilterChain.php(130): CInlineFilter->filter()
#13 C:\wamp\www\yii01\framework\web\CController.php(291): CFilterChain->run()
#14 C:\wamp\www\yii01\framework\web\CController.php(265): PlanningController->runActionWithFilters()
#15 C:\wamp\www\yii01\framework\web\CWebApplication.php(282): PlanningController->run()
#16 C:\wamp\www\yii01\framework\web\CWebApplication.php(141): CWebApplication->runController()
#17 C:\wamp\www\yii01\framework\base\CApplication.php(180): CWebApplication->processRequest()
#18 C:\wamp\www\yii02\yiiars02\index.php(13): CWebApplication->run()
REQUEST_URI=/yii02/yiiars02/index.php?r=planning/reporting
in C:\wamp\www\yii02\yiiars02\protected\views\planning\reporting.php (39)
in C:\wamp\www\yii02\yiiars02\protected\controllers\PlanningController.php (632)
in C:\wamp\www\yii02\yiiars02\protected\controllers\PlanningController.php (318)

我在代码中也看到了一些错误 - 我做了更正并更新了上面发布的源代码。

但错误总是一样的(和日志一样)!

当我在CHtml.php的第2325行之前引入一个var_dump($ listData)时,我得到: array(2){[2013] =&gt; string(4)“2013”​​[2014] =&gt; string(4)“2014”}

如果我加载报告页面,请添加“var_dump($ listData); exit;”在CHtml.php的第2325行之前,该过程继续进行,没有任何错误。

我不明白这有什么问题!


编辑2:

我现在已经解决了这个问题一段时间了。 如果我没有打电话给同一个控制器的另一个动作(我试图做动作报告),一切正常。 我真的需要帮助,因为我无法理解为什么这个另一个动作的调用是一个问题 - 我看了看其他帖子,我觉得这是可行的方法。 我也想知道为什么错误只出现在application.log上,但没有出现标准的yii错误页面。

1 个答案:

答案 0 :(得分:0)

我发现了我的错误 - 我在被调用的动作中有一个糟糕的渲染指令 - 不容易找到