0

おはようございます、

removeByName メソッドを使用しようとしましたが、機能しません。基本的に、オブジェクトを管理する ModelAdmin によって生成されたフォーム内の DataObject のフィールドを非表示にしようとしています。

以下のサンプルコードを参照してください。

///DataObject snippet...
class MyObject extends DataObject{
   public static $db = array(
       'Title' => 'Varchar',
       'Desc' => 'Text',
       'Template' => 'HTMLText',
   );

   //@Override
   public function getCMSField(){
       $fields = parent::getCMSField();
       $fields->removeByName('Template'); /// DOESN'T WORK!!!
       return $fields;
   }

}//class

注:エラーは発生していません。いつものようにフォーム (追加と編集) にフィールドが表示されています。

助けていただければ幸いです。

4

1 に答える 1

0

さて、私は問題を見つけました。

何百万回も API を調べていたところ、関数の名前が間違っていることに気付きました。以下の修正を参照してください。

///Correction, forgot to add the 's' at the end of both the function and the parent call.
public function getCMSFields(){
    $fields = parent::getCMSFields();
}

関数の Apache ログにエラーが生成されていないことは理解できます。これは合法であるためです。ただし、親呼び出しに関しては、メソッドが存在しないため、エラーが発生するはずです。(理論: おそらく、関数が実際に呼び出されていなかったため、親呼び出しが実行されていなかったため、エラー [実行時エラー] は発生していませんでした)。

于 2014-12-01T15:00:20.407 に答える