[Решено] передача значения <input> в форму на другой странице

Тема в разделе "OpenCart", создана пользователем GrblFF, 22 ноя 2015.

Статус темы:
Закрыта.
  1. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Здравствуйте. Есть страница с проверкой номера телефона, на ней инпут для ввода номера телефона и кнопка отправить. После нажатия на кнопку, введенный номер телефона проходит валидацию на корректность и существование. После этого открывается страница регистрации. Нужно чтобы в поле номер телефона стояло значение из предыдущей формы проверки, то есть уже введенный номер телефона. Игры с $_POST ['telephone'] к результату не привели, получаю Notice: Undefined index: telephone in
    Как будет правильно сделать?
     
  2. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    Используйте GET &telephone=888888888
    И в контролере следующей формы ловите
    PHP:
    if (isset($this->request->get['telephone'])) {
            
    $this->data['telephone'] = $this->request->get['telephone'];
           }
     
    Lasted edited by : 23 ноя 2015
  3. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    В том и проблема, что адресную строку трогать нельзя. Нужно именно post данные. Может через js знаете как передать?
     
  4. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    А, если в сессию
    PHP:
    $this->session->data['telephone'] = $this->request->post['telephone'];
    А в контролере следующей формы
    PHP:
    $this->data['telephone'] = $this->session->data['telephone'];
    unset(
    $this->session->data['telephone']);
     
    Lasted edited by : 23 ноя 2015
  5. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Чего то не выходит. На первой странице Notice: Undefined index: telephone. Это же в контроллер, внизу функции index добавлять нужно?
    А выводить <?php echo $telephone; ?> в шаблоне?
     
  6. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    А как вы вообще ловите POST ['telephone'] ?
     
    GrblFF нравится это.
  7. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Стандартно, со страницы регистрации выдрал :Smile:
    PHP:
    if (isset($this->request->post['telephone'])) {
                
    $data['telephone'] = $this->request->post['telephone'];
            } else {
                
    $data['telephone'] = '';
            }
     
    Lasted edited by : 23 ноя 2015
  8. Lena_&9

    Lena_&9

    Регистрация:
    23 фев 2014
    Сообщения:
    71
    Симпатии:
    98
    На странице ввода телефона
    PHP:
    <form action="здесь адрес страницы куда прийдет телефон" method="post" enctype="multipart/form-data">
    <
    input type="text" name="tlf" value="" />
    <
    input type="submit" value="Отправить"  />
    </
    form>
    --- Добавлено, 22 ноя 2015 ---
    В контролере страницы , куда приходит телефон
    внутри
    PHP:
    public function index() {
    if (isset(
    $this->request->post['tlf'])) {
           
    $data['tlf'] = $this->request->post['tlf'];
         } else {
           
    $data['tlf'] = '';
         }
    --- Добавлено, 22 ноя 2015 ---
    На самой странице .tpl выводим в нужном месте <?php echo $tlf; ?>
     
    Lasted edited by : 23 ноя 2015
    GrblFF нравится это.
  9. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Тут проблема в том, что данная форма использует собственный контроллер, который проверяет корректность ввода номера телефона и отсылает на номер смс. Человек вводит код активации и попадает на страницу регистрации. Поэтому передавать в action урл страницы регистрации не получится. Просто способы описанные в интернете почти все опробованы. Нужно как то передавать через сессию, но она не хочет запоминать переменную.
     
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Нет. Это нужно добавить в ту функцию, которая принимает POST запрос из формы и именно в ту её часть, которая обрабатывает данные из POST.
    То есть, сразу после
    PHP:
    if (isset($this->request->post['telephone'])) {
                
    $data['telephone'] = $this->request->post['telephone'];
            } else {
                
    $data['telephone'] = '';
            }
    Добавляете
    PHP:
    $this->session->data['telephone'] = $data['telephone'];
    А затем в нужном контроллере читаете $this->session->data['telephone'].

    В общем, Lena_&9 всё правильно посоветовала и, если этот вариант не работает, значит либо вы что-то не так делаете, либо ваш код изначально нерабочий, то есть у вас в принципе содержимое формы не обрабатывается на сервере.
     
    GrblFF нравится это.
  11. GrblFF

    GrblFF

    Регистрация:
    10 мар 2014
    Сообщения:
    66
    Симпатии:
    1
    Ну конечно. А я настолько запарился, что пишу в начале index , а не в data[action]. Спасибо
     
Статус темы:
Закрыта.