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

質問全般・改善要望
Kenny
メンバー
メンバー
記事: 175
登録日時: 2011年5月28日(土) 13:41

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

投稿記事by Kenny » 2016年12月25日(日) 18:32

お世話になります。

テンプレート変数のカスタムフォームで、以下のように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>

よろしくお願いいたします。
アバター
yama
管理人
記事: 2958
登録日時: 2009年7月29日(水) 02:50

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

投稿記事by yama » 2016年12月25日(日) 20:59

選択状態にしたい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>
新しい仕様を考えるとしたら、上記のような書き方も考えられます。
Kenny
メンバー
メンバー
記事: 175
登録日時: 2011年5月28日(土) 13:41

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

投稿記事by Kenny » 2016年12月26日(月) 11:49

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>';

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

すみません。。
アバター
yama
管理人
記事: 2958
登録日時: 2009年7月29日(水) 02:50

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

投稿記事by yama » 2016年12月26日(月) 14:07

DocListerでファイルを生成する方法で利用できているなら、@PARSE:[[DocLister?xxx]] でもよいかも?
アバター
yama
管理人
記事: 2958
登録日時: 2009年7月29日(水) 02:50

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

投稿記事by yama » 2016年12月26日(月) 14:13

・・・と思ったのですが、試してみたところ@PARSEコマンドを書かなくてもパースされるようです。これは不具合なので修正します
Kenny
メンバー
メンバー
記事: 175
登録日時: 2011年5月28日(土) 13:41

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

投稿記事by Kenny » 2016年12月26日(月) 14:30

Yama様

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

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

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

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

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