2

ドロップダウンリストに含まれているいくつかのオプションの値を持つフォームがあります。新しいユーザーがフォームを開くとき、ドロップダウンのデフォルト値は「-select-」である必要があります。ユーザーが選択した値がデータベースに送信されます。これは現在すべて正常に機能しますが、最初のオプションとして「-select-」がリストされていない場合を除き、デフォルトはデータベースにリストされている最初のオプションです。

'-select-'を追加しようとしていますが、'-select-'を選択したままフォームを送信すると、データベースエラーが発生します。

<div class="control-group">
<label class="control-label">Pricing Profile: </label>
<div class="controls">
    <?php 
    echo form_dropdown('pricing_profile_id', $pricing_profiles, 
              $profile->pricing_profile_id,' class="span3" id="pricing_profile_id" ');
    ?>
</div>
</div>

「echoform_dropdown」の上にこのテキストを追加しようとしましたが、機能しないようです。

array_unshift($pricing_profiles, array(0 => "-select-"));

ありがとう

4

4 に答える 4

3

HTML は、PHP などのプログラミング言語ではなくマークアップ言語 (XML) であるため、PHP のように「null」値をサポートしていません。

したがって、NULL 値を指定することはできません。これに最も近い方法は、PHP で「NULL」の値を探してその値を NULL に設定するか、単純にオプションの値を空白にして、PHP で空白を NULL に評価することです。

于 2012-12-14T17:25:39.427 に答える
2
  1. リストの選択肢の1つとして「選択」する
  2. たとえば、selectの値を「」(つまり値なし)とします。 ( '' => 'Select' )
  3. フォームでフォーム検証を実行します(とにかく実行する必要があります)。ドロップダウンリストを「必須」にする
  4. ユーザーが何も選択しない場合、ユーザーは何かを「選択」しなかったため、フォームの検証は失敗します。
于 2012-12-14T17:23:54.193 に答える
1

$pricing_profiles を入力しているコントローラーで、そこに選択を追加します。たとえば、データを $data でビューに渡す場合、次のようになります。

$data['pricing_profiles'] = whatever you are doing to populate this array;
$data['pricing_profiles'][0] = '-select-';

次に、フォームの検証でコールバック関数を実行します

$this->form_validation->set_rules('pricing_profile_id','Pricing Profile',callback_checkPricingProfile);


function checkPricingProfile($pricing_profile_id)
{
    if($pricing_profile_id==0)
    {
       return false;
    }
 }
于 2012-12-14T19:26:58.267 に答える
0

私は会社の CEO であり、私の CTO は今日不在でした (現在会社にいるのは私たち 2 人だけなので、可能な限りコードを作成しようとしています)。そのため、この質問をしました。しかし、彼が入ってきたことが判明し、私たちは答えを見ました。コントローラーのセットアップ方法で、少し異なる解決策を見つけました。

追加したビュー ファイルでは、次のようになります。

array_unshift($pricing_profiles, "-select-");

コントローラー内で $companies_profiles_data という配列を作成します。これにはいくつかの値が含まれており、そのうちの 1 つが価格設定プロファイル ID です。値を設定する行に三項演算子を追加しました。

'pricing_profile_id' => (strcmp($this-> input-> post('pricing_profile_id'),'0')==0) 
? NULL : $this-> input-> post('pricing_profile_id'),
于 2012-12-14T20:48:14.287 に答える