Ich habe zwei Felder message
und file
wo ist nur einfach string
und file
ist ein Bild.Entweder oder Validierung für Zeichenfolge und Datei yii2
Ich möchte einen Validator erstellen, der es dem Benutzer nur erlaubt, eines dieser beiden Felder zu senden.
versuchte ich when
Validator aber in when
das Feld $model->file
ist immer null
so was andere Methode ist entweder oder Validierung mit Datei zu tun.
Hier ist mein model
Code
class Message extends \yii\db\ActiveRecord
{
public $file;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'message';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['sender_id', 'receiver_id'], 'integer'],
[['message'], 'string'],
[['file'], 'file', 'extensions'=>'jpg, gif, png,jpeg'],
/*['file', 'required', 'when' => function($model) {
return $model->message == null;
}],
['message', 'required', 'when' => function($model) {
return $this->file->baseName == null;
}]*/
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'sender_id' => 'Sender ID',
'receiver_id' => 'Receiver ID',
'message' => 'Message',
'file' => 'Image (jpg/png)',
'is_delivered' => 'Is Delivered',
'is_notified' => 'Is Notified',
'is_deleted' => 'Is Deleted',
'created_date' => 'Created Date',
'updated_date' => 'Updated Date',
'is_group' => 'Is Group',
];
}
}
Danke
Sie tun habe '$ model -> Datei = UploadedFile :: getInstance ($ model, 'Datei'); 'vor dem Aufruf der' validate' Methode? –