ページ 11

テンプレート変数のカスタムフォームでセレクトボックスを使いたい  【解決済み】

Posted: 2016年12月25日(日) 18:32
by Kenny
お世話になります。

テンプレート変数のカスタムフォームで、以下のようにDocLister経由で、とあるフォルダにあるリソースリストのpagetitleを入れこみ、セレクトボックスにしたいと考えています。

編集画面で思惑通りリストはされるのですが、保存→再び編集画面を見てみると、先頭の「1」に戻ってしまっています。
カスタムフォームでセレクトボックスは使えないのでしょうか。

最初は、DocListerが原因かと思っていたのですが、DocListerのコードを抜いても同様でした。


<select id="tv1217" name="tv1217" size="1">
<option value="1">1</option>
<option value="2">2</option>
[[DocLister?
&tpl=`リスト`
&parents=`18`
]]
</select>

よろしくお願いいたします。

テンプレート変数のカスタムフォームでセレクトボックスを使いたい

Posted: 2016年12月25日(日) 20:59
by yama
選択状態にしたいoption要素にselected属性がないためと思います。現在のEvoではselected属性を意図どおりにセットするためには@EVALを用いてPHPでフォームを出力する必要があります。

コード: 全て選択

<select name="[+name+]">
<option value="1" [+value:is(1):then(selected)+]>1</option>
<option value="2" [+value:is(2):then(selected)+]>2</option>
<option value="MODX" [+value:is(MODX):then(selected)+]>MODX</option>
</select>
新しい仕様を考えるとしたら、上記のような書き方も考えられます。

テンプレート変数のカスタムフォームでセレクトボックスを使いたい

Posted: 2016年12月26日(月) 11:49
by Kenny
Yama様

ご無沙汰しております。
ありがとうございます。

なるほど。やはりひと手間かけないと無理なんですね。

2つのリスト群の間で紐づけが必要なことが、以前から多々ありまして、
どうしても出来なかったので、PHPで外部ファイルに一旦書き込んでおいて→そのファイルを随時読み込む…みたいなことをしていたのですが、どう考えてもセキュリティ的にまずいので、悩んでおりました。
こんな感じです。

★DocLister出力でリストを外部ファイルに書き込んで
※ファイルの中は
1
2
3…

★読み込み側のテンプレート変数で
dropdown list menuにしておいて
@FILE http://~~~.net/gaibufile.txt

みたいなことをしていました。

このやり方で外部ファイルをModx内で作成したとしても、「非公開」が「公開」になってしまってファイルが丸見え状態になってしまいました。


■教えていただいた方法で
Custom Formで

@EVAL return
'<select name="[+name+]">
<option value="1" [+value:is(1):then(selected)+]>1</option>
<option value="2" [+value:is(2):then(selected)+]>2</option>
<option value="MODX" [+value:is(MODX):then(selected)+]>MODX</option>
</select>';

を入れるという事でしょうか。
やってみたのですが、うまくいかなくて。。

すみません。。

テンプレート変数のカスタムフォームでセレクトボックスを使いたい

Posted: 2016年12月26日(月) 14:07
by yama
DocListerでファイルを生成する方法で利用できているなら、@PARSE:[[DocLister?xxx]] でもよいかも?

テンプレート変数のカスタムフォームでセレクトボックスを使いたい

Posted: 2016年12月26日(月) 14:13
by yama
・・・と思ったのですが、試してみたところ@PARSEコマンドを書かなくてもパースされるようです。これは不具合なので修正します

テンプレート変数のカスタムフォームでセレクトボックスを使いたい

Posted: 2016年12月26日(月) 14:30
by Kenny
Yama様

解決しました!!笑
こんなに簡単に解決できるとは。。

@parseってこうやって使うんですね。

これで、複数ファイル群の間で紐づけができるようになります。
自分の中では物凄く画期的です。

たぶんこれだけではなくて、他の部分でも遠回りしている所いっぱいあると思います。

本当にありがとうございました!