2016-03-23 9 views
0

Ich habe dieses Verhalten in meinem Modell:Yii2 - Verhalten beim Einfügen verhindert

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 
       ] 
      ] 
     ]; 
    } 

Das Foto hat Standardwert von noavatar.png, und wenn ich einfügen versuchen, bekomme ich diesen Fehler:

Gibt es eine Möglichkeit für mich, Verhalten bei Einfügeaktionen zu verhindern?

+0

overriding beforeSave() hilft Ihnen nicht? – Asped

Antwort

2

Sie können sie bestimmte Namen Verhaltensweisen entfernen durch Abnehmen:

$model->detachBehavior('styles'); 

Oder, wenn es das einzige Verhalten ist, können Sie einfach alles lösen:

Um sicherzustellen, dass Sie nur am Einsatz lösen, überprüfen Sie die Eigenschaft isNewRecord.

0

Erweitert der ImageStyleBehavior die AttributeBehavior? in diesem Fall sollten Sie in der Lage sein verwenden:

public function behaviors() 
{ 
    return [ 
     [ 
      'class' => AttributeBehavior::className(), 
      'attributes' => [ 
       ActiveRecord::EVENT_BEFORE_INSERT => 'attribute1', 
       ActiveRecord::EVENT_BEFORE_UPDATE => 'attribute2', 
      ], 
      'value' => function ($event) { 
        return 'some value'; 
      }, 
     ], 
    ]; 
} 
Verwandte Themen