Cakephp Dropdowns не показывает правильные данные при обновлении страницы - PullRequest
1 голос
/ 06 сентября 2011

На моей странице есть два раскрывающихся списка: один для страны и другой для городов. Когда я загружаю страницу изначально, я устанавливаю страну по умолчанию, загруженную из реестра пользователей. Затем я загружаю города для этой страны.

Проблема в том, что теперь, когда я меняю раскрывающийся список стран и обновляю страницу, выбранное значение раскрывающегося списка моей страны остается тем же, которое изменилось, но города загружаются из страны по умолчанию.

Я получаю правильное значение на виде из контроллера, но вид не устанавливает его правильно. Код на мой взгляд выглядит следующим образом

echo $this->Form->input('from_country_code',
            array(
            'options'=>$countries,
            'id'=>'from_country_code',
            'label' => __('Country',true),
            'selected'=>$selectedCountryCode
            )
        );

Во-вторых, пожалуйста, объясните мне, как я могу обнаружить, что страница обновлена ​​и сохранить измененные раскрывающиеся значения и не выполнить весь код контроллера действий.

Любая помощь будет принята с благодарностью.

Обновлено - Вот мой код контроллера

function add() {

    $currentUser = $this->Auth->user();
    $countryMap = $this->requestAction('/countries/getList/');
    $this->set('countries',$countryMap);
    $this->set('selectedCountryCode',$currentUser['City']['countriesCode']);

    $cityMap = $this->requestAction('/cities/getListByCountryCode/'.$currentUser['City']['countriesCode']);
    $this->set('cities',$cityMap);

    if(!empty($this->data)) {
        if($this->Request->saveAll($this->data)) {
            $this->Session->setFlash('The Request was successfully Posted');
            $this->redirect(array('controller'=>'users','action'=>'requests'));
        }   else {
            $this->Session->setFlash('The Request was not saved. Please try again');
        }
    }

}

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

Я устанавливаю значение выбранной страны в этой переменной @ selectedCountryCode.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2011

Вы не должны использовать обновление, чтобы сделать это, что делает логику контроллера слишком сложной.Используйте JavaScript, чтобы изменить список городов на основе списка стран.Вы можете использовать ajax для получения списка городов.

0 голосов
/ 06 сентября 2011

Я не уверен, что понял. У вас есть два выпадающих списка на одной странице, и что вы хотите сделать, это обновить элементы второго в соответствии с выбранным элементом в первом? И поэтому пользователю придется нажать кнопку обновления, чтобы обновить второй список?

Если это то, что вы имеете в виду, я думаю, что это совсем не удобно для пользователя и даже не является стандартным способом навигации в Интернете. Кроме того, это абсолютно нормально, что все действие контроллера выполняется снова, когда вы нажимаете кнопку обновления. Фактически нажатие кнопки обновления означает в точности «пожалуйста, выполните логику веб-страницы снова».

Если вы хотите более удобный способ обновления второго выпадающего списка, вам следует поискать способ Javascript, чтобы это сделать. См. Например: http://nuts -and-bolts-of-cakephp.com / 2010/03/10 / use-cakephp-jquery-to-build-dynamic-selects /

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