ОБЯЗАТЕЛЬНОСТЬ заполнения полей при редактировании заказа и клиента

Тема в разделе "Общие вопросы", создана пользователем Sergey__, 19 окт 2015.

  1. Sergey__

    Sergey__ Новичок

    Сообщения:
    8
    Симпатии:
    2
    Здравствуйте, ну а если все-таки нужно убрать именно ОБЯЗАТЕЛЬНОСТЬ заполнения полей, а не заполнить их дефолтными данными?

    Конкретно сейчас идет речь об админке.

    Очень-очень неудобно редактировать Клиетнов и Заказы.

    Фамилия, телефон, потом в Оплате опять фамилия, телефон, адрес1, город, страна, область, потом в доставке опять - фамилия, телефон, адрес1, город, страна, область...... - ну бред же!

    Для ос 1.xx инструкция есть и я это делал - все получалось.

    Вот бы нашелся человек, кто написал бы как это сделать для 2.x.x.x. Все были-бы счастливы:)
     
  2. my2you

    my2you Продвинутый пользователь

    Сообщения:
    281
    Симпатии:
    125
    Там все сложно и это не тот раздел куда постоянно заходят. Я вот туда вообще не захожу и не понимаю зачем редактировать постоянно заказ.

    )) Это что за новость? В 1.5 никогда не было редактора заказа!!
     
  3. Sergey__

    Sergey__ Новичок

    Сообщения:
    8
    Симпатии:
    2
    Зато всегда в 1.5.. были Клиенты... Как я писал выше с их редактированием те же проблемы, но для 1.5 есть инструкция по правке котроллера, а вот для OC 2... нету...:(
     
  4. Sergey__

    Sergey__ Новичок

    Сообщения:
    8
    Симпатии:
    2
    Поля пусть остаются, в кое-каких заказах некоторые будут нужны, а кое-каких - нет, ну нафига же тогда делать ОБЯЗАТЕЛЬНЫЕ???? Ну кто это так решил??? Хочу я поправить е-mail клиенту, а зарегился он через модуль Simple, например, который позволяет убрать ненужные поля с формы регистрации - а хрена, будь добр теперь заполни ему фамилию адрес.... Нафига????o_O
     
  5. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Есть модули на opencart.com вроде 40$ стоит..
    Убрать то вроде можно, только хз как все обернется т.к это редактирование завязано на апи движка..
     
  6. Sergey__

    Sergey__ Новичок

    Сообщения:
    8
    Симпатии:
    2
    Всё-равно надо! А то разозлюсь и сделаю букмарклетом или user-скриптом ;)
     
  7. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    924
    Симпатии:
    240
    Можно убрать. Я убирал. Но там надо всю цепочку связей перелопатить. Желаю удачи в бою.
     
  8. Dragon

    Dragon Новичок

    Сообщения:
    4
    Симпатии:
    10
    Искал решение этой проблемы в Сети, не нашел. Ковырнул немного контроллеры админки - получилось =) Пришлось зарегаться тут чтобы опубликовать решение. Тема вроде свежая.
    Итак, что я сделал:
    Файл
    Код:
    admin\controller\sale\order.php
    В функции validateForm()
    для фамилии ищем:

    Код:
    if ((utf8_strlen($this->request->post['lastname']) < 1) || (utf8_strlen($this->request->post['lastname']) > 32)) {
                  $this->error['lastname'] = $this->language->get('error_lastname');
            }
    и закомменчиваем ее или меняем условие с "<1" на "<0"

    Во вкладках фамилия встречается трижды, а значит надо вырезать все.
    Ищем дальше:

    Код:
    if ((utf8_strlen($this->request->post['payment_lastname']) < 1) || (utf8_strlen($this->request->post['payment_lastname']) > 32)) {
                  $this->error['payment_lastname'] = $this->language->get('error_lastname');
            }
    Аналогично - закомментить или изменить условие

    И еще одна:

    Код:
    if ((utf8_strlen($this->request->post['shipping_lastname']) < 1) || (utf8_strlen($this->request->post['shipping_lastname']) > 32)) {
                    $this->error['shipping_lastname'] = $this->language->get('error_lastname');
                }
    Тоже закомментить или изменить условие.

    Все - должно давать сохранять форму с пустым полем "Фамилия"

    Можно пойти дальше и в шаблоне вырезать красные звездочки:
    Файл:
    Код:
    admin\view\template\sale\order_form.tpl
    Ищем (должно быть 3 совпадения):
    Код:
    <td><span class="required">*</span> <?php echo $entry_lastname; ?></td>
    И удаляем из строки
    Код:
    <span class="required">*</span>
    Все - поле не обязательное.

    На этом можно остановиться =) Или..


    Можно вообще удалить эти поля в форме, если глаза мозолят
    Код:
    <tr>
    <td><span class="required">*</span> <?php echo $entry_lastname; ?></td>
    <td><input type="text" name="lastname" value="<?php echo $lastname; ?>" />
    <?phpif ($error_lastname) { ?><span class="error"><?php echo $error_lastname; ?></span>
    <?php} ?></td>
    </tr>
    
    * 2-я и 3-я строки меняются на payment_lastname и shipping_lastname, так что искать надо по
    Код:
    <td><span class="required">*</span> <?php echo $entry_lastname; ?></td>
    и удалять от <tr> до </tr>
    Теперь чтобы валидатор не ругался на отсутствующие переменные, добавим три поля

    Код:
    <input type="hidden" name="lastname" value="<?php echo $lastname; ?>" />
    <input type="hidden" name="payment_lastname" value="<?php echo $payment_lastname; ?>" />
    <input type="hidden" name="shipping_lastname" value="<?php echo $shipping_lastname; ?>" />
    В теле таблицы, можно на месте, где удалили последний блок <tr>...</tr>

    Аналогично поступаем с другими полями, которые хотите сделать необязательными.
    Но я не даю никаких гарантий, что такое вмешательство не выйдет где-нибудь боком. Т.к. такие условия встречаются во многих контроллерах. Можно используя поиск по строкам в файлах и в них вырезать.

    UPD
    Сорри - инфа для 1.5.x, для 2.0 сейчас попробую аналогично выпилить и отписать решение
     
    Ravilr, Ален и Vlad нравится это.
  9. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    держите в курсе если что...
     
  10. Dragon

    Dragon Новичок

    Сообщения:
    4
    Симпатии:
    10
    В общем перекопал весь OC 2.0 :eek:
    Нашел =) там этих условий - туева хуча, но за редактирование заказов в админке отвечает... (барабанная дробь)
    Ищем условие:
    Код:
    if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
                    $json['error']['lastname'] = $this->language->get('error_lastname');
                }
    В файлах:
    Код:
    catalog\controller\api\customer.php
    Код:
    catalog\controller\api\payment.php
    Код:
    catalog\controller\api\shipping.php
    А я поначалу шерстил только папку admin и не мог понять - все проверки вырезал, а он все-равно ругается =)

    Закомментировав это условие, валидатор перестает ругаться на "Фамилия" при редактировании заказа.

    Но!!! Это условие встречается также в файлах:
    admin\controller\marketing\affiliate.php
    admin\controller\sale\return.php
    admin\controller\user\user.php
    catalog\controller\account\address.php
    catalog\controller\account\edit.php
    catalog\controller\account\register.php
    catalog\controller\account\return.php
    catalog\controller\affiliate\edit.php
    catalog\controller\affiliate\register.php
    catalog\controller\checkout\guest.php
    catalog\controller\checkout\guest_shipping.php
    catalog\controller\checkout\payment_address.php
    catalog\controller\checkout\register.php
    catalog\controller\checkout\shipping_address.php

    Соответственно могут сыпаться ошибки в логфайл или еще какие-то баги появиться. Если это у вас происходит, то попробуйте закоммитить этот кусок кода и в них
     
    Последнее редактирование: 31 окт 2015
    vikaharkov, Ecsiron, Родион и 3 другим нравится это.
  11. Dragon

    Dragon Новичок

    Сообщения:
    4
    Симпатии:
    10
    Если закомитить код в файлах:
    Код:
    catalog\controller\checkout\guest.php
    catalog\controller\checkout\guest_shipping.php
    то валидатор перестает просить фамилию при гостевом заказе.

    В файле
    Код:
    catalog\controller\checkout\register.php
    То не просит его если гость выбрал "зарегистрироваться"

    В файле
    Код:
    catalog\controller\account\register.php
    Не просит при обычной регистрации

    В файле
    Код:
    catalog\controller\account\edit.php
    Не заставит посетителя указывать его при редактировании профиля

    В общем - лучше везде его закомитить =)
    Аналогично для других полей
     
    Последнее редактирование: 31 окт 2015
    Ален нравится это.
  12. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    @Dragon лишнего понаписали )) Зачем удалять из контроллеров витрины (я не про апи), когда задача только нужно для админки.
     
  13. Dragon

    Dragon Новичок

    Сообщения:
    4
    Симпатии:
    10
    На всякий случай. Если поле в админке не обязательное и при заказе или регистрации поле скрыто, зачем его в других местах обязательным делать? Кому нужна только админка - пусть режут только в админке.
     
  14. Sergey__

    Sergey__ Новичок

    Сообщения:
    8
    Симпатии:
    2
    О, спасибо вам, добрые люди, будемс пробоватьс!
     
  15. EKLIPS

    EKLIPS Новичок

    Сообщения:
    1
    Симпатии:
    0
    Dragon К сожалению, ваш способ для опенкарт 2 выдаёт всё равно ошибку и попрежнему нельзя отредактировать заказ не указав фамилию....

    После всех исправлений, при нажатии кнопки "Продолжить" в редактировании товара всплывает окно где два раза написано "Internal server error" :(

    Посмотрев консоль вб раузере, пишет следующее:

    POST http://МОЙСАЙТ.ru/index.php?route=api/customer&token=3gSdL3OjUuP5tgFlZsVST8XWzCawxngM 500 (Internal Server Error)
     
  16. Kira07

    Kira07 Новичок

    Сообщения:
    1
    Симпатии:
    2
    Попробуйте заменить в этих файлах < 1 на < 0:

    catalog\controller\api\customer.php
    catalog\controller\api\payment.php
    catalog\controller\api\shipping.php

    if ((utf8_strlen(trim($this->request->post['lastname'])) < 1) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
    $json['error']['lastname'] = $this->language->get('error_lastname');
    }
    на

    if ((utf8_strlen(trim($this->request->post['lastname'])) < 0) || (utf8_strlen(trim($this->request->post['lastname'])) > 32)) {
    $json['error']['lastname'] = $this->language->get('error_lastname');
    }

    Для opencart 2.1 помогло :)
     
    vikaharkov и zver28 нравится это.
  17. Cheremadze

    Cheremadze Новичок

    Сообщения:
    18
    Симпатии:
    0
    Привет. Постоянно сталкиваюсь с данной проблемой. Если самовывоз, то в симпле клиент оформляет только регион, свое имя, почту телефон. И если вдруг надо скорректировать заказ, заново приходится клиенту самостоятельно его набивать. Есть готовое решение?
     
  18. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    Я так понял, что тут можно просить два окмода?)
    Один для админки и один для витрины.
    Люди добрые подайте, кто что может)
    Мне бы для ОС 2.3 очень оба пригодились.
    А заодно проверю и подправлю, если что)
     
  19. Cheremadze

    Cheremadze Новичок

    Сообщения:
    18
    Симпатии:
    0
    Для витрины есть готовое решение, для админки.. очень пригодилось бы.
     
  20. Ecsiron

    Ecsiron Продвинутый пользователь

    Сообщения:
    415
    Симпатии:
    53
    Это какое?)
    У меня так постоянно в работе. Клиенту нужно вчера, поэтому он позвонил сегодня.
    А ждать от 8 недель их ломает, поэтому нужны аналоги, которые есть в наличии.
    А еще ко мне звонят партнеры и спрашивают все по очереди одно и то же)