2017-11-28 15 views
0

誰かが私のページテンプレートの変数$ SubTitleに "Hire"という単語が含まれているかどうかを確認するTextParser関数のトラブルシューティングに役立ちますか?Silverstripe Text Parser関数が値を返さない

$ SubTitleに "Hire"という単語が含まれていると、関数は表示されなくなります。私は$ str = $ SubTitleとは関係がありますが、これを正しく書く方法はわかりません。これらOrderItemのクラスから来ている場合は、

public function getVisibility() 
{ 
    return strpos($this->SubTitle, 'Hire') === false ? 'hidden' : 'visible'; 
} 

または:あなたはOrderItemサブクラスを自分で実装している場合


class OrderTypeExtension extends TextParser 
{ 
    function parse(){ 
    $str = $SubTitle; 

    if (strpos($str, 'Hire') !== false) 
    return 'visible'; 
    else return 'hidden'; 

    } 
} 
+0

違反はありませんが、あなたのコードでは、SilverStripeとプログラミングに関する一般的な知識はあなたには間違いないと思います。私は 'TextParser'を使うよりも良い解決策があると確信しています...あなたのページの' SubTitle'フィールドですか? – bummzack

+0

違反はありません。私は過去12ヶ月間にそれに精通してきましたが、機能は非常に緑色で、基本を拡張しようとしています。 SubTitleは、サイトのカートページのOrderItem情報の可変部分を指します。説明するにはどうすればよいかわかりませんが、その機能は以下のとおりです。 public function SubTitle() { リターン 'Hire:' $ this-> Lease() - > Title;/* '($' '$ this-> Lease() - > PricePerLength。'/mth) '*/ } – kegs

+0

silvershopを使用していますか?それはあなたがその 'SubTitle'関数を実装したカスタムOrderItemクラスですか、どうやって追加しましたか?あなたが提供した情報から、 'SubTitle'は常に' Hire'という文字列を含んでいるようです。私はあなたがあなたの質問にいくつかの情報を追加して答えることができると思う。 – bummzack

答えて

1

は、あなただけで、それぞれにヘルパーメソッドを追加することができますモジュールを使用し、そのまま使用する場合は、Extensionを使用してください。

class VisibilityExtension extends Extension 
{ 
    public function getVisibility() 
    { 
     return strpos($this->owner->SubTitle, 'Hire') === false 
      ? 'hidden' : 'visible'; 
    } 
} 

その後、あなたOrderItemクラス、as described in the docsVisibilityExtensionを追加します。

dev/buildの後に、テンプレートに$Visibilityを使用して、hiddenまたはvisibleを出力することができます。

+0

ありがとう@bummzackコードを実装しましたが、拡張子がcart.ssテンプレートの 'hidden'で置き換えられて$ getVisibilityとしてレンダリングされているようですが、レンタル商品が追加されても 'visible'だから私は$ this-> owner-> SubtitleがorderItemを正しくチェックしていないと仮定します。私たちはチェックしようとしているあなたはまだ助けたい場合は I (https://github.com/FarrowDesign/ff_shop)githubのにファイルを追加しましたサブタイトル機能は、これは、LeaseOrderItem.php – kegs

+1

を参照していますStackOverflowが、あなたが解決しようとしている問題と今まであなたの質問で行ったことを書くことを奨励する理由問題がなければ、良い答えを与えることは本当に難しいです。あなたの問題は次のとおりです。_カートのテンプレートの情報をカートの中に隠すにはどうすればいいですか?_、TextParserについてのことではありません。 – bummzack

+0

私はこの質問/回答が救済できるとは思わない...私は新しい質問を作成し、おそらくこれを削除することをお勧めします。 – bummzack