2016-12-07 14 views
0

シルバーストライプ表示ロジックはCMSのフォーム上で完全に機能しますが、フロントエンドのフォーム、特にブートストラップフォームで動作するようにはできません。フロントエンド/ブートストラップフォームのシルバーストライプ表示ロジック

要素を非表示にしますが、ロジックが適用されても表示されません。

これは、表示が1からブロックに変わるだけです。 これを行う方法はありますか?それで、ページのリロードにも状態が維持されますか?ドロップダウン値はDBエントリとして保存されます。

EDIT:これはCMSで機能しますが、フロントエンドでは機能しません。Customは列挙型の値の一部です。

DropdownField::create("Wetsuit","Wetsuit") 
      ->setSource(singleton('DiveEquipment')->dbObject('Wetsuit')->enumValues()) 
      ->setEmptyString('Select one'), 


NumericField::create('Fins','Fins') 
      ->displayIf('Wetsuit') 
      ->isEqualTo('Custom') 
      ->end(), 

EDIT2:SilversTripe 3.5での作業、ブートストラップは1.20と表示ロジック1.0.8

1.0.8はいえ非常に時代遅れであるフォーム。

+0

'Wetsuit'ドロップダウンの値を' Custom'に変更すると、 'Fins'フィールドは表示されません。実際のドロップダウン値に 'Custom'が含まれていることを確認しましたか?たぶんドロップダウン作成コードを投稿する必要があります。 – bummzack

+0

これは正解です。 CMSでは表示されますが、フロントエンドでは表示されません。値は 'Custom'を含んでいます。 フロントエンドにJSエラーがあります。 OPを更新します。 – Craig

+0

私はあなたがエンタメを含める必要があると思います... – bummzack

答えて

0

ほとんどのフィールドではDisplayLogicWrapperが必要ではないと思っています... UploadFieldのようなフィールドを意味します。

これを試しましたか?

ここ
NumericField::create('Fins','Fins') 
    ->displayIf('Wetsuit') 
    ->isEqualTo('Custom') 
    ->end(), 
+0

申し訳ありませんが、私は 'DisplayLogicWrapper'の有無にかかわらず試してみたはずです。 – Craig

0

ない問題が、それはバグがカスタムテンプレートは、優先順位の問題を引き起こし、中/テンプレート/ない/テンプレート/フォーム/存在して表示ロジック1.3と下位に存在していることは注目に値します。

FieldGroupで問題が発生して、正しいテンプレートやその他のものがレンダリングされない場合。 Display Logic 1.4にアップグレードするとこれが解決されます。

+0

ちょっとメモしておきます。私はDisplay Logicのバージョン1.0.8にダウングレードして動作します。それは従来のブートストラップテーマを使用していませんが、それでも動作しています。 SilverStripe 3.5、Bootstrap Forms 1.20、Display Logic 1.0.8が動作します。かなり古いですが、それは私のために働くようです – Craig

+0

ブートストラップアイテムをコピーした場合、私は賭けます: https://github.com/unclecheese/silverstripe-display-logic/tree/1.0.8/templates あなたのテーマに/ {mytheme}にアップグレードし、最新のDisplayLogicにアップグレードしました。あなたは最新のバージョンとすべての機能を持っています。古いバージョンにはBootstrapが組み込まれているようだ。 – SilbinaryWolf

0

これをフロントエンドで使用するには、jQueryとjQuery Entwineを組み込む必要があります。これはテストされていませんが、問題を解決するはずです。

class Page_Controller extends ContentController { 
    public function init() { 
     parent::init(); 
     Requirements::javascript(THIRDPARTY_DIR . '/jquery/jquery.js'); 
     Requirements::javascript(THIRDPARTY_DIR . '/jquery-entwine/dist/jquery.entwine-dist.js'); 
    } 
} 
+0

ありがとう、彼らはすでに両方とも含まれています。私はページソースでそれらを見ることができます。 – Craig

+0

それらはどのような順序で含まれていますか?表示ロジックは、jQueryとjQuery Entwineの後になければなりません。 – SilbinaryWolf

+0

順序はJquery 1.11.3、ブートストラップ形式、Jquery Entwine、Display Logicです。 Jqueryの使用12はJSエラーを投げていました。 1.11.3を使用してもエラーは発生しませんが、それでも動作しません。 – Craig

関連する問題