2016-05-06 9 views
0

GridFieldListの後に拡張機能を作成して、ModelAdminにUploadFieldを追加しようとしています。しかし、私はいつも、 "..../framework/forms/FormField.phpの非オブジェクト上のメンバ関数FormAction()をLine 161で呼び出す"というエラーを受け取ります。 TextField、DropdownFieldを問題なく追加できますが、UploadFieldでは不運です。 私は何かを見逃しましたか?SilverstripeがModelAdminにUploadFieldを追加できませんでした

<code> 
    class MyExtension extends Extension{ 
     public static $has_one = array(
      'ImportCSV' => 'File' 
     ); 
     public function updateEditForm($form){ 
      $fields = $form->Fields(); 
      $fields->push(
       new TextField('Title', 'Title') 
      );//This one works 
      $fields->push(
       new UploadField('ImportCSV', 'Import CSV') 
      );//This one not working 
     } 
    } 
</code> 

答えて

0

あなたはExtension(具体的にDataExtension)を書いているなら、あなたは、参照することによりFieldListのインスタンスが渡されupdateCMSFields($fields)を使用すると思います。私はあなたが欲しいと思うようupdateCMSFields()への呼び出しに延びている(飾り)DataExtensionFileに追加するか、上記のあなたの例ではextends DataExtensionからextends Extensionを変更し、dev/build flush=all

+0

Thxを実行いずれか、UploadFieldを追加するのではなく、

、 @theruss。私はExtensionと混同しています。実際には、ModelAdminページに1つのUploadFieldと1つのButtonを追加しようとしています。ユーザーがCSVをアップロードしてボタンをクリックすると、DBの一部のレコードが変更されます。この場合、あなたは何か提案がありますか? – user1982312

+0

私はあなたが何をしようとしているかを見ていると思う。そこにあるものを試してみて、修正してください: 'ReportAdmin'をコピーして名前を変更してください。 'getEditForm()'とは別にすべてを取り除き、カスタムフィールドとロジックで_that_を修正してください。 'ModelAdmin'に組み込まれているアップロードCSV形式(' CsvBulkLoader'クラスを参照)を変更し、必要に応じて変更することもできます。この種のことをカバーするsilverstripe.orgのチュートリアルがいくつかあります。しかし、いつものように、本質的に他の人のアイデアであるものを適応させ、あなたがしようとしているものに適合させるために、箱の外で少し考えなければなりません。 – theruss

関連する問題