我在我的模型中有这种行为:
public function behaviors()
{
return [
'styles' => [
'class' => ImageStyleBehavior::className(),
'path' => \Yii::getAlias('@webroot') . '/files/userphotos/styles',
'url' => \Yii::getAlias('@web') . '/files/userphotos/styles',
'attribute' => 'photo',
'styles' => [
'300x300' => [$this, 'style300'], //can be any valid callable
'100x100' => [$this, 'style100'], //can be any valid callable
]
]
];
}
照片的默认值为 noavatar.png ,当我尝试插入时,出现此错误:
Exception 'Imagine\Exception\RuntimeException' with message 'Unable to open image /var/www/c2c/Care2Shine/www/files/userphotos/'
我有办法阻止插入操作的行为吗?
答案 0 :(得分:2)
您可以通过分离来删除特定的命名行为:
$model->detachBehavior('styles');
或者,如果它是唯一的行为,你可以分开所有:
$model->detachBehaviors();
为确保您仅在插入时分离,请检查isNewRecord
属性。
答案 1 :(得分:0)
ImageStyleBehavior是否扩展了AttributeBehavior?在这种情况下,您应该可以使用:
public function behaviors()
{
return [
[
'class' => AttributeBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => 'attribute1',
ActiveRecord::EVENT_BEFORE_UPDATE => 'attribute2',
],
'value' => function ($event) {
return 'some value';
},
],
];
}