フォームヘルパでセレクトボックスの配列フォームを作ると値が保持されない
Ethna2.3.2での現象。
APPID_Form_Sampleでフォーム定義を以下のように記述する。
var $form = array( 'foo' => array( 'form_type' => FORM_TYPE_SELECT, 'type' => array(VAR_TYPE_STRING), 'option' => array('りんご', 'みかん', 'バナナ'), ), );
そしてSampleテンプレートは以下のように記述する。
{form ethna-action="sample"} {form_input name="foo"} {form_input name="foo"} {form_submit} {/form}
これで2つのセレクトボックスに違う値を設定して送信し、同じテンプレートに遷移させても値が保持されない。1つの<select>内の<option>にいくつもselected="selected"属性が設定されてしまっている。セレクトボックスの配列がmultipleなセレクトボックスであると解釈されてしまっている様子。
Ethna_ViewClass.phpの_getFormInput_Select関数内、724行目付近の
if (in_array((string) $key, $current_value, true)) {
を、
$def['_form_counter'] = empty($def['_form_counter']) ? 0 : $def['_form_counter']; if (isset($params['multiple']) && in_array((string) $key, $current_value, true) || !isset($params['multiple']) && $selected === false && strcmp($current_value[$def['_form_counter']], $key) === 0) {
と変更したら直った。