1

我在 tuts+ 上关注使用 YII2 编程教程,但是当我完成使用 Yii2 编程一章:Sluggable Behavior并尝试访问/status/页面时,我看到了下一条错误消息 错误信息

我连接到 SluggableBehavior 的模型

namespace app\models;

use Yii;
use yii\behaviors\SluggableBehavior;


class Status extends \yii\db\ActiveRecord
{
    const PERMISSIONS_PRIVATE = 10;
    const PERMISSIONS_PUBLIC = 20;

    public function behaviors()
    {
        return [
            [
                'class' => SluggableBehavior::className(),
                'attribute' => 'message',
                // 'slugAttribute' => 'slug',
            ],
        ];
    }
    . . .

我做错了什么?我在 yii2 目录中的 SluggableBehavior 类中阅读了权威指南和使用示例,但没有发现任何特别之处。

4

2 回答 2

3

经过几个小时阅读有关 yii2 和 sluggable 行为的文档和论坛后,我找到了我需要的东西。

我指定value属性并且一切正常:

'value' => function($event){
    if(!empty($event->sender->slug))
        return $event->sender->slug;
    return Inflector::slug($event->sender->title);
},
于 2015-06-28T14:16:08.597 回答
0

在你的情况下这是正确的,但我有同样的问题,但出于其他原因。我试图合并父行为和当前模型行为并且错误地忘记了一级括号[]

  public function behaviors() {
    return array_merge(parent::behaviors(),
      [  // <-- forgot this brackets
        [
          'class'=> \yii\behaviors\SluggableBehavior::className(),
          'attribute'=> ['singleTranslation.title'],
          'immutable' => true,
          'ensureUnique' => true,
          //'slugAttribute' => 'slug'
        ]
      ]  // <-- forgot this brackets
    );
  }
于 2018-04-24T20:04:47.050 回答