0

フォームでキャプチャを使用しています。ユーザーがキャプチャに無効な回答を送信すると、ページが再読み込みされ、フィールドにユーザーデータが再入力されます。私の質問は、どのドロップダウン値が選択されたかを確認するためのより良い(またはより簡単な)方法があるかどうかです。

これは私が今持っているものであり、機能します:

php

<?php
    $state = $sf_params->get('state'); 
?>

html

<span>State </span>
    <select size="1" name="state">
            <option value="" selected="selected"></option>
            <option value="AL" <?php if ($state == "AL") { echo "selected = 'selected'"; } ?>>Alabama</option>
            <option value="AK" <?php if ($state == "AK") { echo "selected = 'selected'"; } ?>>Alaska</option>
            <option value="AZ" <?php if ($state == "AZ") { echo "selected = 'selected'"; } ?>>Arizona</option>
            <option value="AR" <?php if ($state == "AR") { echo "selected = 'selected'"; } ?>>Arkansas</option>

GET変数を取得してからオプションを解析し、一致する値を探すための別の解決策はありますか?

4

2 に答える 2

2

ええと、自分でフォームを作成するのはあまり良い習慣ではありません。通常、sfFormクラスなどのウィジェットを使用する必要があります。

ただし、本当にこの種のものを作成したい場合は、フォームタグの作成に役立つsf1.0から優れたヘルパーを戻す必要があります。あなたの場合、関数options_for_selectselect_tagは役に立つかもしれません:

  • options_for_select

    オプションの配列変数<option>に基づいて、フォーマットされたタグのセットを返します。$options

  • select_tag

    <select>オプションでタグで構成されるタグを返します<option>

options_for_select2番目のパラメータとして、必要な選択された値を取りました。

つまり、というファイルを作成し、lib/helper/FormHelper.phpこれら2つの関数をその中に入れます。ビューにヘルパーをロードすることを忘れないでください:

<?php use_helper('Form') ?>

そして、options_for_selectselect_tagを使用して選択を構築します。

于 2012-07-06T15:38:26.450 に答える
1

まず、selectの値をコントローラーの配列に移動します。

$states = array('AL' => 'Alabama', ... );

次に、前述のHelper j0kを使用するか、徒歩で移動できます
。コントローラーで変数を割り当てる。

$this->states = $states;

テンプレート内:

<?php foreach ($states as $key => $value): ?>
<option value="<?php echo $key ?>" <?php if ($state == $value) { echo "selected = 'selected'"; } ?>><?php echo $value ?></option>
<?php endforeach; ?>

ただし、ヘルパーの使用もお勧めします。

于 2012-07-06T17:21:39.957 に答える