簡體   English   中英

Yii:使用Cjuidialog時出現奇怪的錯誤

[英]Yii : strange errors when using Cjuidialog

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 reporttesttest中的舊鏈接不再起作用(無法在....... / index.php?r = planning / xlsAbsences中找到頁面)。 但是動作xlsAbsences存在並且沒有改變。 div報表中的新鏈接無法正常工作-同樣的錯誤。

這是最奇怪的事情:如果在視圖中,我刪除該行:

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

=>舊鏈接再次起作用。

但這也許是正常現象,但是請我需要了解發生了什么!

編輯:我在應用程序日志中發現以下內容:

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] => string(4)“ 2013”​​ [2014] => string(4)“ 2014”}

如果加載報告頁面,請添加“ var_dump($ listData); exit;”。 在CHtml.php的第2325行之前,該過程繼續進行,沒有任何錯誤。

我不明白這是怎么回事!


編輯2:

我在這個問題上工作了一段時間。 如果我不調用同一控制器的另一個操作(如我嘗試執行的動作報告),則一切正常。 我在這里確實需要幫助,因為我不明白為什么調用另一個動作會帶來問題-我看了其他帖子,並給人留下了這樣的印象。 我也想知道為什么錯誤僅出現在application.log上,而沒有出現標准yii錯誤頁面。

我發現了我的錯誤-我在調用的動作中使用了錯誤的渲染指令-不容易找到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM