Показать выбранную опцию в меню HTML Select после перезагрузки страницы в CakePHP - PullRequest
0 голосов
/ 22 марта 2012

Я создаю не-javascript-версию веб-сайта, так как есть ряд клиентов, у которых не включен javascript. На этом сайте клиент выбирает, какую страну он будет посещать, а затем соответственно отображает данные, относящиеся к этой стране.

Мне удалось заставить это работать. Они используют раскрывающееся меню HTML, чтобы выбрать страну, нажмите «Отправить», и страница перезагрузится с данными, относящимися к выбранной стране. Однако это не меняет страну, отображаемую в раскрывающемся меню HTML, поэтому при перезагрузке страницы она возвращается к «Выбрать страну».

Что бы я хотел, чтобы это произошло, так это то, что если вы щелкнете по Соединенному Королевству в раскрывающемся списке, например, при перезагрузке страницы в раскрывающемся списке должно появиться Соединенное Королевство.

Вот код, который я сейчас использую для просмотра файла:

<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); 
}

Ура! * * 1013

1 Ответ

1 голос
/ 22 марта 2012

Если вы используете 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'];

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...