【问题标题】:Getting unknown property in Yii在 Yii 中获取未知属性
【发布时间】:2020-12-16 14:42:36
【问题描述】:

在那里的课程内容下,我想让活动列显示“是”或**“否”**起初它显示“ 1”或“0”,但这不是我想要展示的。这些是我尝试的代码,我收到了这个错误。如果有人可以请指导我,不胜感激。

未知属性 – yii\base\UnknownPropertyException 获取未知属性:app\models\Coursecontent::isActive

<?php

use yii\helpers\Html;
use yii\grid\GridView;
use yii\widgets\DetailView;

/* @var $this yii\web\View */
/* @var $model app\models\Course */

$this->title = $model->course_name;
$this->params['breadcrumbs'][] = ['label' => 'Courses', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
\yii\web\YiiAsset::register($this);
?>
<div class="course-view">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>
        <?= Html::a('<< Back', ['index'], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Update', ['update', 'id' => $model->course_id], ['class' => 'btn btn-primary']) ?>
        <?= Html::a('Delete', ['delete', 'id' => $model->course_id], [
            'class' => 'btn btn-danger',
            'data' => [
                'confirm' => 'Are you sure you want to delete this item?',
                'method' => 'post',
            ],
        ]) ?>
    </p>

    <?= DetailView::widget([
        'model' => $model,
        'attributes' => [     
            'course_name',
            'description',
            ['attribute' => 'active', 'value' => $model->isActive,'contentOptions' => ['style' => $model->active == 1 ? 'color:green' :'color:red']],
            'lastupdate',
        ],
    ]) ?>

<h2>Course Content</h2>

<?= Html::a('Create Coursecontent', ['coursecontent/create'], ['class' => 'btn btn-success']) ?>


<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'chapter_name',
        'description',
        'video_link',
        ['attribute' => 'active',
             'value' => function ($model, $key, $index, $column) {return $model->isActive;},
             'contentOptions' => function ($model, $key, $index, $column) { 
                return $model->active == 1 ? ['style' => 'color:green'] : ['style' => 'color:red']; 
            }],

        ['class' => 'yii\grid\ActionColumn',
             
             'contentOptions' => ['class' => 'text-center'],
             'buttons' => [
                'view' => function ($url,$model) {
                    return Html::a('<span class="glyphicon glyphicon-eye-open"></span>',['coursecontent/view', 'id' => $model->coursecontent_id]);
                },
                'update' => function ($url,$model) {
                    return Html::a('<span class="glyphicon glyphicon-pencil"></span>',['coursecontent/update', 'id' => $model->coursecontent_id]);
                },
                'delete' => function ($url,$model) {
                    return Html::a('<span class="glyphicon glyphicon-trash"></span>',['coursecontent/delete', 'id' => $model->coursecontent_id],
                        ['data' => [
                            'confirm' => 'Are you sure you want to delete this item?',
                            'method' => 'post',
                        ],
                    ]);
                },
            ]],
    ],
]); ?>
</div>

【问题讨论】:

  • 在一个地方使用$model-&gt;isActive,在另一个地方使用$model-&gt;active。我认为第二个是正确的,因为错误非常简单。
  • ['attribute' =&gt; 'active', 'value' =&gt; function ($model, $key, $index, $column) {return $model-&gt;active;}, 'contentOptions' =&gt; function ($model, $key, $index, $column) { return $model-&gt;active == 1 ? ['style' =&gt; 'color:green'] : ['style' =&gt; 'color:red']; }],
  • 是的,我已将 isActive 更改为 active,但现在它仍然显示“1”而不是“是”

标签: php yii2


【解决方案1】:

必须对您的代码进行 2 处更改。

  1. 将所有$model-&gt;isActive 更改为$model-&gt;active
  2. 根据$model-&gt;active 值返回“是”或“否”。

更新DetailView

[
    'attribute' => 'active',
    'value' => function ($model) {
        return $model->active ? "Yes" : "No";
    },
    'contentOptions' => ['style' => $model->active ? 'color:green' :'color:red']
],

更新GridView

[
    'attribute' => 'active',
    'value' => function ($model) {
        return $model->active ? "Yes" : "No";
    },
    'contentOptions' => function ($model, $key, $index, $column) { 
        return $model->active ? ['style' => 'color:green'] : ['style' => 'color:red']; 
    }
],

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多