0

ファイルをアップロードするために、ng-admin でカスタム フィールドを定義します。ここのドキュメントを使用します。

リポジトリの admin-config を含めます。

CustomeFileField を次のように定義します。

import Field from "./admin-config/lib/Field/Field.js";

class CustomFileField extends Field {
    constructor(name) {
        super(name);
        this._type = 'customfile';
        this._id = undefined; 
        this._entity_field = undefined;
        this._upload_information = {};
}

uploadInformation(baseUrl) {
    if(!argument.length) return this._upload_information;
    if(typeof this._id === 'undefined') {
        throw new Error('You must provide a valid id for the entity');
    }
    this._upload_information = { 
                'url': baseUrl + 'fr/media/upload?ref_id='+ this._id +'&ref=OpnRecipeBundle\\Entity\\Recipe', 
                 'apifilename': 'files' 
    };
    return this; 
}

// value of the entity id
id(value) {
    if(!argument.length) return this._id;
    this._id = value;
    return this;
}
//name of the field in the entity id
entityField(value) {
    if(!argument.length) return this._entity_field;
    this._entity_field = value;
    return this;
    }
}
export default CustomFileField;

そして、ドキュメントに従って対応するビューを定義しました。

私は両方を現在のものに登録します:

nga.registerFieldType('customfile', require('./CustomFileField.js'));
fvp.registerFieldView('customfile', require('./CustomFileFieldView.js')); 

次に、新しく作成した定義型を次のように呼び出します。

nga.field('itsname','customfile');

それにもかかわらず、すべてを適切にトランスパイルした後、現在のエラーがあります。

エラー: [$injector:modulerr] モジュール opnAdmin のインスタンス化に失敗しました: this._fieldTypes[t] はコンストラクターではありません

慎重にログを記録すると、フィールド typeTypes コレクションには多くのエントリがあり、各タイプに 1 つずつ、ネイティブの ng-admin タイプには関数ですが、新しく定義されたタイプ (「customfile」) にはオブジェクトであるため、新しい演算子を呼び出してエラーをスローします。その人たちへの解決策はありますか?

4

1 に答える 1