【问题标题】:Kartik export is not downloading file on local hostKartik 导出未在本地主机上下载文件
【发布时间】:2015-07-31 19:14:23
【问题描述】:

我通过演示阅读了它并应用了他们所说的一切。到目前为止,我的代码运行良好,没有错误。但是当我从下拉菜单中单击 pdf 中的下载时,会发生以下情况 取消阻止弹出窗口。我解开了它。 然后打开一个带有文本“生成要导出的pdf”的新窗口 但它什么也没做。它就像一个关于:空白页。我错过了什么。它在现场演示中完美运行。

index.php

    $gridColumns = [
    ['class' => 'kartik\grid\SerialColumn'],
    'id',
    'title',
    ['class' => 'kartik\grid\ActionColumn'],
]; 
echo ExportMenu::widget([
    'dataProvider' => $dataProvider,
    'columns' => $gridColumns,
    'target'=>ExportMenu::TARGET_POPUP,
]);

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'id' => 'w2',
        //'pjax' => true,
        'columns' => [
            ['class' => 'kartik\grid\CheckboxColumn'],

            'user_id',
            [ ...

这里是用途:

    use yii\helpers\Html;
//use yii\grid\GridView;
use common\models\user\AbstractsSearch;
use yii\widgets\ActiveForm;
use backend\models\AssignedAbstracts;
use kartik\grid\GridView;
use common\models\Board;
use common\models\user\User;
use yii\helpers\ArrayHelper;
use yii\helpers\Url;
use yii\widgets\Pjax;
use kartik\export\ExportMenu;

以下是我$dataProvider中的数据

    object(yii\data\ActiveDataProvider)[32]
  public 'query' => 
    object(yii\db\ActiveQuery)[34]
      public 'sql' => null
      public 'on' => null
      public 'joinWith' => null
      public 'select' => null
      public 'selectOption' => null
      public 'distinct' => null
      public 'from' => null
      public 'groupBy' => null
      public 'join' => null
      public 'having' => null
      public 'union' => null
      public 'params' => 
        array (size=0)
          empty
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
      public 'where' => 
        array (size=1)
          'conferenceId' => int 2
      public 'limit' => null
      public 'offset' => null
      public 'orderBy' => null
      public 'indexBy' => null
      public 'modelClass' => string 'common\models\user\Abstracts' (length=28)
      public 'with' => null
      public 'asArray' => null
      public 'multiple' => null
      public 'primaryModel' => null
      public 'link' => null
      public 'via' => null
      public 'inverseOf' => null
  public 'key' => null
  public 'db' => null
  public 'id' => null
  private '_sort' (yii\data\BaseDataProvider) => null
  private '_pagination' (yii\data\BaseDataProvider) => 
    object(yii\data\Pagination)[131]
      public 'pageParam' => string 'page' (length=4)
      public 'pageSizeParam' => string 'per-page' (length=8)
      public 'forcePageParam' => boolean true
      public 'route' => null
      public 'params' => null
      public 'urlManager' => null
      public 'validatePage' => boolean true
      public 'totalCount' => int 0
      public 'defaultPageSize' => int 20
      public 'pageSizeLimit' => 
        array (size=2)
          0 => int 1
          1 => int 50
      private '_pageSize' => int 2000
      private '_page' => null
  private '_keys' (yii\data\BaseDataProvider) => null
  private '_models' (yii\data\BaseDataProvider) => null
  private '_totalCount' (yii\data\BaseDataProvider) => null
  private '_events' (yii\base\Component) => 
    array (size=0)
      empty
  private '_behaviors' (yii\base\Component) => null

【问题讨论】:

  • 这通常需要一些时间
  • 多少时间?我应该等多久?一分钟左右?还是更多?
  • 有时一分钟。还要检查您的网络服务器是否为 mime pdf 正确配置。并确保您的阻止弹出窗口被禁用,否则不起作用
  • 它甚至没有下载文本文件,更不用说 pdf 了。我等了一个小时。可能还有其他问题您可以指出!
  • 向我展示您对 ExportMenu::widget、GridView::widget、命名空间和使用的看法

标签: yii2


【解决方案1】:

我将以下代码放在阻止提交请求的活动表单中

     $gridColumns = [
    ['class' => 'kartik\grid\SerialColumn'],
    'id',
    'title',
    ['class' => 'kartik\grid\ActionColumn'],
]; 
echo ExportMenu::widget([
    'dataProvider' => $dataProvider,
    'columns' => $gridColumns,
    'target'=>ExportMenu::TARGET_POPUP,
]);

只要我将代码从活动表单中取出,下载就会立即开始。

需要考虑的几点:

1) 如果您没有使用活动表单并且您按照我的做法进行操作,请清理浏览器缓存。

2) 确保您的服务器允许下载 pdf 文件(大小(对于其他文件),类型)

3) 交叉检查演示是否正在下载文件,而您无法在本地主机或您的实时站点上下载文件,这肯定是您的服务器阻止了下载。

4) 如果演示也不适合您,那么问题出在您的浏览器而不是代码或服务器上。

如果存在任何其他问题,请转到链接并阅读讨论。它非常有帮助 Kartik's discussion on export file issues

【讨论】:

    【解决方案2】:

    在我使用的工作软件中(所以弹出窗口没有问题)

        'target' => ExportMenu::TARGET_BLANK,
    

    而不是

       'target'=>ExportMenu::TARGET_POPUP,
    

    我看到你正在使用

    $gridColumns = [
       ['class' => 'kartik\grid\SerialColumn'],
       'id',
       'title',
      ['class' => 'kartik\grid\ActionColumn'],
    

    ['class' =&gt; 'kartik\grid\SerialColumn'],['class' =&gt; 'kartik\grid\ActionColumn'],

    它们不是导出菜单所必需的,可能会导致问题。删除它们或分配没有变量的列。

    【讨论】:

    • 你确定dataProvider中有数据吗?
    • 是的,数据提供者中大约有 10 到 11 列,其中只有 2 列有数据……只有一行单行用于测试目的。
    • 我已将问题更新为“我的 $dataProvider 中有哪些数据”
    • 对不起,我的意思是在 $dataProvider->models 中(数据在这个变量中)。检查 $dataProvider->models 是否包含数据
    • 是的,它有两次单行数据。一个在 _attributes 下,一个在 _oldAttributes 下
    猜你喜欢
    • 1970-01-01
    • 2020-01-21
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    相关资源
    最近更新 更多