2012-03-22 10 views
0

Javascriptを有効にしていない顧客が多数いるため、JavaScript以外のバージョンのWebサイトを構築しています。このサイトでは、顧客が訪問する国を選択し、それに応じてその国に関連するデータを表示します。CakePHPでページをリロードした後、HTML Selectメニューで選択したオプションを表示

私はこれを動作させることができました。 HTMLドロップダウンメニューを使用して国を選択し、[送信]をクリックすると、選択した国に関連するデータがページにリロードされます。ただし、HTMLドロップダウンメニューに表示される国は変更されないため、ページがリロードされると「Select A Country」に戻ります。

たとえば、ドロップダウンボックスから英国をクリックすると、ページがリロードされるときにドロップダウンに英国が表示されます。ここで

は、私は現在、ビューファイルのために使用していますコードです:

<form name="countryselect" action="/selected-country/" method="post"> 
    <select id="country-list" name="countryselected"> 
     <?php foreach($countries as $coun) { ?> 
      <option value="<?php echo $coun['Tariff']['countryslug']; ?>"><?php echo $coun['Tariff']['countryname']; ?></option> 
     <?php } ?> 
     <input type="submit" value="Submit" /> 
    </select> 
</form> 

そして、私のコントローラファイルに私はこれを使用しています:

$countries = $this->Tariff->find('all', array('conditions' => array('Tariff.gsmid' => '1'))); 
$this->set('countries', $countries); 

if (!isset($_POST['countryselected'])) { 

} else { 

    $countryselect = $_POST['countryselected']; 

    $tarcounselect = $this->Tariff->find('first', array('conditions' => array('Tariff.countryslug' => $countryselect))); 
      $this->set('tarcounselect', $tarcounselect); 
} 

乾杯!

+0

私は推測します$ _SESSION ['selectedCountry']のようなものにセッションを保存するためにsessionを使用する必要があります。また、redirecそれが空でない場合は、選択されたものはそれに等しいと表示されません –

答えて

1

Cakeを使用する場合は、フォームを手動で作成する必要はありませんが、代わりにCake FormHelperを使用してください。その後、自動的に選択した国を維持します:

コントローラー:

$this->set('countries', $this->Tariff->find('list', array('conditions' => array('Tariff.gsmid' => '1'), 'fields' => array('countryslug', 'countryname')))); 

ビュー:

<?php 
echo $this->Form->create(); 
echo $this->Form->select('Tariff.countryslug', $countries); 
echo $this->Form->end(__('Submit')); 
?> 

そしてコントローラで選択した国を取得する:

if($this->request->is('post')) 
{ 
    $countryslug = $this->request->data['Tariff']['countryslug']; 

} 
+0

魅力のように動作します!ありがとうございました:) – mickburkejnr

+0

選択した国を取得する方法を追加する前に私の答えを受け入れました:-) – nIcO

+0

ここでコピーしたものはすぐに働きましたか? – mickburkejnr

関連する問題