shaklov 63 Опубликовано 12 мая, 2016 Жалоба Share Опубликовано 12 мая, 2016 Как в карточку клиента внести изменения? 1. емейл обязателен (стали приходить анкеты без емейла) 2. дата рождения графа (мы поздраваляем клиентов по смс) Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 13 мая, 2016 Жалоба Share Опубликовано 13 мая, 2016 Клиент может появиться в админке через страницу регистрации и через оформление. т.е. нужно править /app/Vendor/smarty/vam_plugins/function.register.php и function.checkout.php Добавляя новые поля, js проверку. Затем в базу данных добавлять нужные колонки в таблицу customers если нет нужной колонки. А уже затем в админке выводить данные, в /app/View/Customer В принципе, всё тоже самое, что и в VamShop 1, только раз в 10 придётся меньше времени и кода делать чем в первой версии. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 24 мая, 2016 Автор Жалоба Share Опубликовано 24 мая, 2016 Создал новое поле в БД, успешно добавил html-код для нового поля "день рождения": 1. в админку для создания нового клиента, файл \app\Model\Customer.php 2. в регистрацию в магазине, файл \app\Vendor\smarty\vam_plugins\function.registration_form.php В оформление заказа, файл \app\Vendor\smarty\vam_plugins\function.checkout.php пытаюсь добавить html-код по аналогии - поле не сохраняется. Видимо где-то php-код нужно править - всё обыскал, не могу понять где при оформлении заказа создаётся новый покупатель. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 24 мая, 2016 Жалоба Share Опубликовано 24 мая, 2016 /app/Model/Customer.php можно не трогать. По идее, достаточно в registration_form добавить новое поле, с названием колонки базы данных в таблице customer Например, есил колонка назывется dob То в форме регистрации добавить: <input id="dob" name="customer[dob]" class="form-control" type="text" value="{$form_data.dob}" /> По идее, этого должно быть достаточно, что б записались данные из формы в таблицу customer, в колонку dob Сам код записи в базу в методе register в /app/Controller/SiteController.php Это видно из названия формы регистрации /site/register site - это название контроллера. register - название метода в контроллере. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 25 мая, 2016 Автор Жалоба Share Опубликовано 25 мая, 2016 Я про форму при оформлении заказа спрашиваю, которая \app\Vendor\smarty\vam_plugins\function.checkout.php Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 мая, 2016 Жалоба Share Опубликовано 25 мая, 2016 Тогда в /app/Controller/OrdersControlller.php Там надо новое поле добавить, ищите код по // Save customer data По аналогии с email добавить и своё поле: if ($_POST['email'] != '') $customer_data['Customer']['email'] = $_POST['email']; Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 25 мая, 2016 Автор Жалоба Share Опубликовано 25 мая, 2016 Да, всё получилось. Спасибо. Странно, что в первых двух случаях нужно было добавить только новый input в шаблон. А тут php-код нужно добавлять. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 25 мая, 2016 Жалоба Share Опубликовано 25 мая, 2016 Это потому что там идёт запись в две таблицы, в customer и в address_book А надо как-то определять, что писать в customer, что писать в address_book. Была бы одна таблица, не было бы необходимости в таком коде и достаточно было бы добавить новое поле в форму и всё. Ссылка на сообщение Поделиться на другие сайты
shaklov 63 Опубликовано 26 мая, 2016 Автор Жалоба Share Опубликовано 26 мая, 2016 Оказывается поле клиента "дата рождения" нужно, чтобы отображалось в админке в карточке заказа. В разделе "Контактная информация", под телефоном. А там все данные берутся из таблицы заказов. Но считаю не правильным в заказах хранить "день рождения". Что и где нужно дописать, чтобы выдернуть ДР покупателя из таблицы customers? Например $data['Order']['phone'] есть и добавить $data['Customer']['dob'] Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 мая, 2016 Жалоба Share Опубликовано 26 мая, 2016 Так я ж не могу за Вас код весь писать. В админку десятки разделов с примерами кода. Смотрите например как выводятся данные на странице покупателей, на странице редактирования покупателя. Если в таблице orders записалось поля customer_id, то вообще элементано вытащить данные покупателя, зная его id. Строки 3 кода добавить нужно будет в /app/Controller/OrdersController.php что б достать данные покупателя. и в шаблон их вывести ещё одна строка в /app/View/Orders/admin_view.ctp Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 мая, 2016 Жалоба Share Опубликовано 26 мая, 2016 В общем, если id номер покупателя известен, то вcё просто делается, сейчас напишу один из вариантов. В /app/Controller/Ordercontroller.php после: $this->set('data',$order[0]); добавить: App::import('Model', 'Customer'); $Customer = new Customer(); if ($order[0]['Order']['customer_id'] > 0) $customer = $Customer->find('first', array('conditions' => array('Customer.id' => $order[0]['Order']['customer_id']))); $this->set('data_customer',$customer); Всё. Теперь можно любые данные покупателя выводить. В /app/View/Orders/admin_view.ctp например в любом месте добавить: $data_customer['Customer']['name'] name - это колонка в таблице customers Можно вместо name любую колонку из таблицы выводить. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 26 мая, 2016 Жалоба Share Опубликовано 26 мая, 2016 P.S. Всё это описано в руководстве по CakePHP - http://book.cakephp.org/2.0/en/index.html Так что очень желательно его почитать, сделать пример блога из руководства, что б хотя бы основы framework'a понимать, всё очень легко и логично потом будет получаться, если понять правила CakePHP. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения