Здравствуйте! Делаю на сайте выбор города. При поиске решения наткнулся на статью. Сделал всё по пунктам, но вылетает ошибка при изменении города в сессии пользователя:
Думаю, дело в кастомном модуле:
function вашмодуль_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'webform_client_form_572') {
if ($_SESSION['smart_ip']['location']) {
$form['submitted']['gorod']['#default_value'] = 'tid_' . $_SESSION['smart_ip']['location']['zip'];
$form['#submit'][] = '_webform_city_submit';
}
}
}
function _webform_city_submit($form, $form_state) {
//тут сохраняем в сессию
$tid = substr($form_state['values']['submitted_tree']['gorod'], 4); //because 'tid_X';
if ($_SESSION['smart_ip']['zip'] != $tid) {
//тут перезаписываем
$_SESSION['smart_ip']['zip'] = $tid;
$_SESSION['smart_ip']['city'] = db_select('taxonomy_term_data', 'terms')
->fields('terms', array('name'))
->condition('tid', $tid, '=')
->execute()->fetchField();
global $user;
$location = $_SESSION['smart_ip'];
smart_ip_set_location_data($user, $location);
}
}
if ($form_id == 'webform_client_form_572') {
if ($_SESSION['smart_ip']['location']) {
$form['submitted']['gorod']['#default_value'] = 'tid_' . $_SESSION['smart_ip']['location']['zip'];
$form['#submit'][] = '_webform_city_submit';
}
}
}
function _webform_city_submit($form, $form_state) {
//тут сохраняем в сессию
$tid = substr($form_state['values']['submitted_tree']['gorod'], 4); //because 'tid_X';
if ($_SESSION['smart_ip']['zip'] != $tid) {
//тут перезаписываем
$_SESSION['smart_ip']['zip'] = $tid;
$_SESSION['smart_ip']['city'] = db_select('taxonomy_term_data', 'terms')
->fields('terms', array('name'))
->condition('tid', $tid, '=')
->execute()->fetchField();
global $user;
$location = $_SESSION['smart_ip'];
smart_ip_set_location_data($user, $location);
}
}
У кого какие мысли?
Вложение | Размер |
---|---|
vybor_goroda.png | 38.28 КБ |
Комментарии
А имя компонента формы у вас точно такое, как и у автора способа (gorod)?
Да, у веб формы стоит синоним url "gorod".
Как поле со списком выбора в вашей форме называется?
Кхм, извиняюсь, что не понял. Ключ поля формы называется "gorod" — верно?
ну обычные нотисы и все. php 5.3 же. Решение простое, сделать проверку на наличие и все.
решили?
решили?
копипастерство захватило планету...
А почему бы не воспользоваться отладкой?
http://ru.wikipedia.org/wiki/%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B0_...
http://www.ibm.com/developerworks/ru/library/os-php-xdebug/
https://netbeans.org/kb/docs/php/debugging_ru.html
http://habrahabr.ru/post/31505/
http://habrahabr.ru/post/132291/
http://habrahabr.ru/post/209024/
http://habrahabr.ru/post/139004/
http://www.xdebug.ru/
Ёлки-палки, потратьте один день, что бы понять как всё это работает, зато потом практически любая ошибка локализуется в худшем случае за 15 минут.
P.S. Наверное не все ссылки одинаково полезны... сам их не читал, но беглый взгляд говорит, что они могут почмочь ТС.
Ничего не получается кто нибудь может полностью описать что и как этот никита петров сделал, ничего не понятно,