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行之前,该过程继续进行,没有任何错误。
我不明白这有什么问题!
我现在已经解决了这个问题一段时间了。 如果我没有打电话给同一个控制器的另一个动作(我试图做动作报告),一切正常。 我真的需要帮助,因为我无法理解为什么这个另一个动作的调用是一个问题 - 我看了看其他帖子,我觉得这是可行的方法。 我也想知道为什么错误只出现在application.log上,但没有出现标准的yii错误页面。
答案 0 :(得分:0)
我发现了我的错误 - 我在被调用的动作中有一个糟糕的渲染指令 - 不容易找到