テンプレート変数での@selectの挙動が変わってしまったようです。

質問全般・改善要望
返信する
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

テンプレート変数での@selectの挙動が変わってしまったようです。

投稿記事 by shobu »

いつもお世話になっております。
1.0.10シリーズでは問題なかったので1.0.12以降ではないかと思いますが、TVで@selectを使用した際の表示する文字列とvalueの関係が変わってしまったようです。

http://rtfm.modx.com/evolution/1.0/deve ... (at)select

コード: 全て選択

@SELECT color_name, color_value FROM colors
上記ページにあるように、SELECT によって2列のデータを取ってcheckboxやSELECTを表示させた場合、表示には第一列、valueには第2列が入っていたはずですが、1.0.12ですと第2列が無視されてvalueと表示文字列が同じになってしまいます。
この状態ですと既存データの選択状態が反映されませんし、アップデートの前後で投入される値の形状が変わってしまいます。

これは仕様変更ではなく、バグで一時的なものと言うことでよいでしょうか?
これから不具合が出ている箇所を探そうとしているのですが、修正のポイントがお分かりの方がいらっしゃるようでしたらご教授頂けると大変助かります。
(1.0.12-r1デモ画面でもチェックしましたが、同様のようです)
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: テンプレート変数での@selectの挙動が変わってしまったようです。

投稿記事 by shobu »

tmplvars.inc.php に新設された splitOption という関数の不具合のように見えます。

コード: 全て選択

	function splitOption($value)
	{
		if(is_array($value)) $value = $value['0'];
		
		if(strpos($value,'==')===false) $label = $value;
		else                            list($label,$value) = explode('==',$value,2);
		
		return array($label,$value);
	}
@SELECT で得た pagetitle, id の組み合わせを行毎に分解されたものが引数 $value で渡されます。テキストで xx==yy||zz=ww 等としている場合は||で分割した xx==yy 型式のテキストが渡されるようです。
$valueが配列だと $value に $value['0'] をいれているのですが、こちらが pagetitle にあたるもので、その後に$label に $value (pagetitleにあたるもの)をいれてしまっているため、結果的に$label も $value も同じpagetitleに当たるものが入ってしまっています。

a) @SELECTで pagetitle, id 型式だと配列が入力
b) @SELECT または直接入力 xx||zz 型式(または pagetitle のみ)の場合はプレーンテキストが入力
c) 直接入力で xx==yy||zz=ww 型式だと xx==yy 型式のプレーンテキストが入力

の3パターンのようなので、元の処理を生かしつつ私の言いたいことを表すと…

コード: 全て選択

	function splitOption($value)
	{
		if(is_array($value)) {
			$label=$value[0];
			$value=$value[1];
		} else {
			if(strpos($value,'==')===false) $label = $value;
			else                            list($label,$value) = explode('==',$value,2);
		}
		return array($label,$value);
	}
となるイメージです(これで問題が解決することを確認しています)。

isSelected関数の方は現状のままで問題なさそうです。
アバター
yama
管理人
記事: 3236
登録日時: 2009年7月29日(水) 02:50

Re: テンプレート変数での@selectの挙動が変わってしまったようです。

投稿記事 by yama »

いつもありがとうございます。このへん複雑な部分なので、調べていただいて助かります。次のリリースで反映させていただきます!
shobu
メンバー
メンバー
記事: 91
登録日時: 2011年5月26日(木) 16:54

Re: テンプレート変数での@selectの挙動が変わってしまったようです。

投稿記事 by shobu »

ご連絡ありがとうございました。
よろしくお願いいたします。
返信する