Перейти к содержанию
Форум поддержки пользователей VamShop

Добавления в карточку клиента


Рекомендуемые сообщения

Как в карточку клиента  внести изменения?
1. емейл обязателен (стали приходить анкеты без емейла)
2. дата рождения графа (мы поздраваляем клиентов по смс)

Ссылка на сообщение
Поделиться на другие сайты

Клиент может появиться в админке через страницу регистрации и через оформление.

т.е. нужно править /app/Vendor/smarty/vam_plugins/function.register.php и function.checkout.php

Добавляя новые поля, js проверку.

Затем в базу данных добавлять нужные колонки в таблицу customers если нет нужной колонки.

А уже затем в админке выводить данные, в /app/View/Customer

В принципе, всё тоже самое, что и в VamShop 1, только раз в 10 придётся меньше времени и кода делать чем в первой версии.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 weeks later...

Создал новое поле в БД, успешно добавил 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-код нужно править - всё обыскал, не могу понять где при оформлении заказа создаётся новый покупатель.

Ссылка на сообщение
Поделиться на другие сайты

/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 - название метода в контроллере.

Ссылка на сообщение
Поделиться на другие сайты

Я про форму при оформлении заказа спрашиваю, которая \app\Vendor\smarty\vam_plugins\function.checkout.php

Ссылка на сообщение
Поделиться на другие сайты

Тогда в /app/Controller/OrdersControlller.php

Там надо новое поле добавить, ищите код по // Save customer data

По аналогии с email добавить и своё поле:

if ($_POST['email'] != '') $customer_data['Customer']['email'] = $_POST['email'];

 

Ссылка на сообщение
Поделиться на другие сайты

Да, всё получилось. Спасибо.
Странно, что в первых двух случаях нужно было добавить только новый input в шаблон. А тут php-код нужно добавлять.

Ссылка на сообщение
Поделиться на другие сайты

Это потому что там идёт запись в две таблицы, в customer и в address_book

А надо как-то определять, что писать в customer, что писать в address_book.

Была бы одна таблица, не было бы необходимости в таком коде и достаточно было бы добавить новое поле в форму и всё.

Ссылка на сообщение
Поделиться на другие сайты

Оказывается поле клиента "дата рождения" нужно, чтобы отображалось в админке в карточке заказа. В разделе "Контактная информация", под телефоном.
А там все данные берутся из таблицы заказов. Но считаю не правильным в заказах хранить "день рождения".
Что и где нужно дописать, чтобы выдернуть ДР покупателя из таблицы customers? Например $data['Order']['phone'] есть и добавить $data['Customer']['dob']

Ссылка на сообщение
Поделиться на другие сайты

Так я ж не могу за Вас код весь писать.

В админку десятки разделов с примерами кода.

Смотрите например как выводятся данные на странице покупателей, на странице редактирования покупателя.

Если в таблице orders записалось поля customer_id, то вообще элементано вытащить данные покупателя, зная его id.

Строки 3 кода добавить нужно будет в /app/Controller/OrdersController.php что б достать данные покупателя.

и в шаблон их вывести ещё одна строка в /app/View/Orders/admin_view.ctp

Ссылка на сообщение
Поделиться на другие сайты

В общем, если 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 любую колонку из таблицы выводить.

Ссылка на сообщение
Поделиться на другие сайты

P.S. Всё это описано в руководстве по CakePHP - http://book.cakephp.org/2.0/en/index.html

Так что очень желательно его почитать, сделать пример блога из руководства, что б хотя бы основы framework'a понимать, всё очень легко и логично потом будет получаться, если понять правила CakePHP.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...