チャンク内での条件分岐

質問全般・改善要望
返信する
taka1532
メンバー
メンバー
記事: 6
登録日時: 2015年5月19日(火) 21:19

チャンク内での条件分岐

投稿記事 by taka1532 »

チャンク内に以下のような条件分岐を記述し、[+comment+]プレースホルダに何らかの値が設定されている場合にのみメッセージが表示される動作を期待したのですが、値の内容に関わらず常にメッセージが表示されてしまいました。

<!--@IF: [+comment+]-->
コメントありがとうございます。
<!--@ENDIF-->

文法的に間違っている箇所などありますでしょうか?
なお上記プレースホルダは cfFormMailer スニペットで使用しています。

■環境
MODX 1.0.14J-r9
cfFormMailer 1.3
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: チャンク内での条件分岐

投稿記事 by yama »

<!--@IF: [+comment+]-->
[+comment+]コメントありがとうございます。
<!--@ENDIF-->
このように書いてみてください。どのように表示されますか?
taka1532
メンバー
メンバー
記事: 6
登録日時: 2015年5月19日(火) 21:19

Re: チャンク内での条件分岐

投稿記事 by taka1532 »

例えばcommentプレースホルダに「hoge」と入力して実行したところ、

hogeコメントありがとうございます。

のようにコメント表示されました。
ところで条件分岐の動作確認として、試しに <!--@IF: 0--> と記述するとコメントが非表示となり、<!--@IF: 1--> と記述するとコメントが表示されました。
つまり条件分岐処理は正しく行われているのだと思うのですが、条件として与えた [+comment+] が正しく評価されていないのでしょうか…?
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: チャンク内での条件分岐

投稿記事 by yama »

値を入力しない場合はどうなりますか?

もしかするとcfFormMailer側の問題かなという気がします。プレースホルダの展開はスニペットによって解釈がまちまちで、MODX本体の処理を使わずスニペット自前の処理で展開することがありますので。
taka1532
メンバー
メンバー
記事: 6
登録日時: 2015年5月19日(火) 21:19

Re: チャンク内での条件分岐

投稿記事 by taka1532 »

すみません、よくよく調べたら cfFormMailer 側で、「入力値が空(NULL)の場合は確認画面表示時に &nbsp; に変換」という機能が実装されていました。私がブラウザ画面上でしか確認していなかったため気付いておりませんでした。大変失礼しました…。
そこで今度は、「comment が &nbsp; でない場合はメッセージを表示する」という処理を行うため以下のように記述したのですが、comment がどのような値でもメッセージが表示されてしまいました。

<!--@IF: [+comment:ne=`&nbsp;`:then=1:else=0+]-->
[+comment+]コメントありがとうございます。
<!--@ENDIF-->

判定処理が行われているか確認するため、1行目を以下のようにして常に 0 が返るようにしてみたのですが結果は同じでした。

<!--@IF: [+comment:ne=`&nbsp;`:then=0:else=0+]-->

文法的に間違っていますでしょうか…?
返信する