【问题标题】:Yii2 Arraydataprovider custom valueYii2 Arraydataprovider 自定义值
【发布时间】:2016-02-03 10:31:37
【问题描述】:

首先,在谷歌上一无所获之后,我真的很失望!

我有一个名为 Arraydataprovider 的

$data = [
    400 => [
        'name' => 'x',
        'lesson_1' => '10',
        'lesson_2' => '9',
        ...
    ],
    389 => ...
]

它是在 for 循环中生成的。

我希望在文本框中显示值:

foreach($lessons as $lid => $name) {
        $attrs[] = [
                'attribute' => 'lesson_' . $lid,
                'label' => $name['name'], 
                'format' => 'raw',
                'value' => function($model, $key, $index) use($lid, &$data) {
                        return '<input class="txt" data-lid="'.$lid.'" type="text" value="'.$data[$key]['lesson_'.$lid].'"/>';
                }

        ];
}

它给了我错误:未定义的索引:第 49 课 但我确信 $data 提供者拥有关键的课程_49(由 var_dump 证明);

有什么问题? :-(

【问题讨论】:

  • 也许在!isset($data[$key]['lesson_'.$lid])时尝试在你的价值函数中使用var_dump($data)
  • @PatrykRadziszewski 哦,我认为这是个大问题!!!它起作用了,谢谢。请回答问题,让我选择它作为答案

标签: php yii2 dataprovider


【解决方案1】:

您应该使用isset()empty() 检查值是否为空:

使用isset()内部值函数检查空值。

例如,

(isset($data[$key]['lesson_'.$lid]) ? $data[$key]['lesson_'.$lid] : '-';

您也可以使用var_dump($data)

【讨论】:

    【解决方案2】:

    !isset($data[$key]['lesson_'.$lid]) 时尝试在你的价值函数中使用var_dump($data) 并检查你的数据有什么问题

    【讨论】:

    • 我应该说更好的答案是使用 (isset($x) ? $x : '-')
    • @pooria 当然,我同意这就是它最终应该看起来的样子......但在某些情况下,我们想知道到底出了什么问题,尤其是在开发过程中。
    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2018-08-10
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多