Yii2 SluggableBehavior"属性"或"价值"属性必须指定错误

时间:2015-06-26 12:49:04

标签: php yii2 yii2-basic-app

我在tuts +上关注Programming with YII2 tutorial但是当我完成章节Programming With Yii2: Sluggable Behavior并尝试访问/status/页面时,我会看到下一条错误消息 error message

我连接到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类中的权威指南和使用示例,但没有找到任何特殊内容。

2 个答案:

答案 0 :(得分:3)

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

我指定value属性,一切正常:

'value' => function($event){
    if(!empty($event->sender->slug))
        return $event->sender->slug;
    return Inflector::slug($event->sender->title);
},

答案 1 :(得分: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 ); }

{{1}}