2016-07-12 5 views
1

$menu_icon変数をCMSPageControllerに変更しようとしましたが、コアファイルを編集することはありません(IE:CMSのメニュー項目 "Pages"の横にあるアイコン)。私は手足に行って、次のことを試してみました:

1:

CMSPageController: extensions: - ChangeMenuIcon 

_config.yml

2にCMSPageControllerへの拡張を定義します。クラスを定義し、個人用サイトにCMSPageControllerExtensionから

class ChangeMenuIcon extends CMSPageControllerExtension { 
    private static $menu_icon = 'framework/admin/images/menu-icons/16x16/information.png'; 
} 
を拡張します

この結果、500のエラーが発生します。これは実際には既存の(コア)クラスプロパティを上書きする正しい方法ですか?

+1

FYI:「CMSPageControllerExtension」クラスがないため、500エラーが発生しました。あなたの拡張は、 'LeftAndMainExtension'のサブクラスか、まさに' Extension'でなければなりません。とにかく答えで説明されているようにconfigシステムを使用するので、それに固執する。 – bummzack

+0

ああ、私はちょうどその 'CMSPageControllerExtension'クラスを作成した.ymlファイルにそのものを入れて考える。間違った推測だと思います! – Faloude

+0

構成に基づいてクラスは生成されません。拡張の場合は、クラスを記述し、それらを適用するためにconfigシステムを使用します。 – bummzack

答えて

3

ファルウド、私的な静的なので、拡張子を適用するのではなくconfig.ymlに直接設定してみてください。

CMSPagesController: 
    menu_icon: 'framework/admin/images/menu-icons/16x16/information.png'; 
+0

うまくいっているようです。私のコードで私はプライベート静的変数を再定義しようとしています。しかし、 '$ menu_title'は親クラスの** private **なので、サブクラスの値を変更することはできません。 – Faloude

+1

@Faloudeあなたはサブクラスでそれを再定義することができます。多くの場合、プライベート静的変数は設定システムに使用され、直接アクセスすべきではなく、むしろ 'Config'を通してアクセスするべきです。 'Config :: inst() - > get( 'MyClass'、 'my_static_var')'です。または、 'Object'の任意のサブクラスで:$ this-> config() - > my_static_var' – bummzack

+0

面白いので、プライベート静的変数やより具体的にはconfigシステムの変数にアクセス/編集する理由は何ですか?そして、いわゆるクラス*システムの下にあるクラスは何ですか? – Faloude

関連する問題