We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 24364
    • 54 Posts
    Подскажите пожалуйста! Как передать в форму параметр с другой страницы?Например нажимая на ссылку:"заказать наушники"
    пользователь переходит на страницу с формой где уже будет заполнено поле:"товар"
      Меня банят на всех форумах! Низачто!!!
      • 28814 ☆ A M B ☆
      • 1,086 Posts
      http://www.rentalcar.lv/cars.ru.html
      Что-то вроде этого?
      Как работает EFORM - я не знаю, пишу почти все сниппеты сам, но способ передачи данных в принципе элементарный:
      Передаете свой параметр в форме либо через POST, либо через GET. Сниппет, который у Вас EFORM, должен принять этот параметр и подставить в нужном поле. Также сниппет может еще предварительно обработать его - скажем, проверить на возможные SQL-инъекции, каким-либо образом трансформировать параметр как здесь http://www.rentalcar.lv/index.ru.html - на главной парочка машин, по ссылке передающих параметр car с каким-либо числом, которое сниппет уже трансформирует в название автомобиля. Получать значение параметра в сниппете можно также через $_GET[], $_POST[] (в моем примере это $_POST[’car’] либо $_GET[’car’]).
        Разработка сайтов и программных модулей на MODX.
        Опыт работы на MODx с 2005 года. Высокое качество.
        Компания Baltic Design Colors: http://www.bdcolors.ru.
        • 24364
        • 54 Posts
        Спасибо Игорь за отзыв!именно это мне и нужно.опиши пожалуйста поподробней.

        Посылаю getом и postом , он не принимает.
          Меня банят на всех форумах! Низачто!!!
          • 28814 ☆ A M B ☆
          • 1,086 Posts
          Эм.. честно говоря, я не знаю как написать поподробнее. Может быть вот такой кусок кода поможет:
          К примеру представим, что на выходе наша форма имеет 5 полей: Имя клиента, E-mail, Телефон, Код заказанного товара (или его название) и необязательное поле для сообщения.
          Тогда вид нашей формы будет приблизительно такой:
          <form name="sendOrder" action="post">
          <input type="text" name="clientName" />
          <input type="text" name="clientMail" />
          <input type="text" name="clientPhone" />
          <input type="text" name="clientOrder" />
          <textarea name="clientMessage"></textarea>
          <input type="submit" value="Submit Form" />
          </form>
          Значит при переходе на страницу, где у нас расположена эта форма, клиент должен видеть уже заполненое поле clientPhone.
          Перед этим определимся, как у нас выглядит каталог (или просто место, откуда производится заказ):
          а) это может быть просто ссылка с параметром (как я приводил пример постом выше, когда есть пара машин на главной);
          б) это может быть каталог товаров, где передача данных происходит посредством отправки формы (тоже было в посте выше).
          Для меня безразлично, как это будет реализовано у Вас, можно даже объединить оба варианта (опять же пример был дан выше). Смотрите сами, как Вам удобнее.
          В варианте А мы будем получать данные посредством $_GET[], в варианте Б - посредством $_POST.
          Я не буду углубляться во всевозможные проверки типа - не введен проверочный код защиты от спама, не заполнены необходимые поля, проверку на допустимые значения данных и т.п., лишь покажу саму суть ответа на Ваш вопрос.
          Создадим сниппет с названием, скажем, sendOrder. Этот сниппет подразумевает, что все данные к нему должны приходить через форму, т.е. получать данные мы будем с помощью $_POST. Причем в этой форме передаваемый параметр должен быть с именем product. Сниппет можно легко модифицировать, если нужно передавать данные через строку браузера, тогда просто вместо POST надо написать GET. Итак, запишем в него следующий код:



          //Сначала все-же сделаю одну необязательную проверку (нечто подобное стоит на www.rentalcar.lv)
          if ($_POST["product"] == "") { //Если попытались зайти на форму прямо, минуя каталог, т.е. набрали в адресной строке что-то вроде http://www.yoursite.com/order/, тогда переменная естественно будет пустой, а мы отправим нахального юзера обратно к корню сайта...
          $location = "Location: http://www.yoursite.com/";
          header($location); //... с помощью функции header();
          }
          else {
          $product = $_POST["product"]; //Если же переменная $_POST["product"] что-то содержит, запишем это значение в переменную $product
          }

          //Дальше все вообще элементарно - мы просто вписываем значение переменной $product для параметра value поля ввода clientOrder.
          $output = "
          <form name=\"sendOrder\" action=\"post\">
          <input type=\"text\" name=\"clientName\" />
          <input type=\"text\" name=\"clientMail\" />
          <input type=\"text\" name=\"clientPhone\" />
          <input type=\"text\" name=\"clientOrder\" value=\"".$product."\" />
          <textarea name=\"clientMessage\"></textarea>
          <input type=\"submit\" value=\"Submit Form\" />
          </form>
          ";

          //В итоге возвращаемая переменная $output будет содержать строковое значение HTML формы, где уже будет заполнено значение аттрибута value для поля ввода clientOrder.
          return $output;
          Да, конечно, Вы должны еще будете на странице заказа вызвать сам сниппет как [!sendOrder!] Заметьте, сниппет должен быть НЕкешируемый.
          Конечно, это очень упрощенная запись, в результате его работы будет просто выведена форма с одним предварительно заполненным полем clientOrder. В "полевых" же условиях понадобится добавить к сниппету возможность отправки данных на мейл с помощью функции mail() или, если еще усложнить себе жизнь, сохранять заказы в БД и сделать дополнительно панель управления заказами для администратора.. Но это уже в дальнейшем. EForm, судя по его названию, наверняка как раз отправляет данные на мейл админу, в Ваших же руках доработать этот сниппет, чтобы он делал то, что Вам нужно wink. Удачи!
            Разработка сайтов и программных модулей на MODX.
            Опыт работы на MODx с 2005 года. Высокое качество.
            Компания Baltic Design Colors: http://www.bdcolors.ru.
            • 26586
            • 184 Posts
            у eForm есть обработчики, используйте их
            пусть обработчик перед выводом формы проанализирует параметр в get или referer и добавить нужный текст в шаблон формы
              • 24364
              • 54 Posts
              так и не разобрался как куда вставить $_get[] в eform.

              Зато это пригодилось мне при создании каталога. разделы у меня выводятся с помощью wifinder в чанке которого ссылка выглядит вот так : href="index.php?id=19&parents=[+wf.docid+]"
              в ditto 2 вставил: $parents = $_GET["parents"]; (в ditto 1 startid)
              ditto вызывается один раз на одной странице.Теперь нет необходимости вызывать ditto в каждом родителе


              структура каталога

              раздел1
              подраздел1
              товар1
              товар2
              товар3
              подраздел2
              раздел2
              подраздел1
              товар1
              товар2
              товар3
              подраздел2
              товар1
              товар2
              товар3
              раздел3
              подраздел1
              товар1
              товар2
              товар3
              подраздел2
              товар1
              товар2
              товар3

              wifinder выводит разделы и подразделы при нажатии на ссылку отправляет get запрос на страницу с ditto, который выводит нужные товары из выбранного раздела.


              Сам понимаю что не очень понятно обьяснил, если кому интересна конструкция спрашивайте постараюсь разьяснить.
                Меня банят на всех форумах! Низачто!!!