Отправьте письмо администратору со ссылкой BO на конкретного клиента в Prestashop 1.6
В Prestashop 1.6, от FrontController, я должен отправить письмо администратору магазина.
Эта часть работает хорошо, но у меня возникли проблемы, чтобы включить ссылку на страницу администрирования конкретного клиента.
Единственное, что мне не хватает, это имя каталога администрирования. Я мог бы разобрать и объединить PS_ADMIN_DIR
Выход я получил :
$admin_customer_link = _PS_BASE_URL_ .__PS_BASE_URI__ /* Missing the Administration directory name here */ .$this->context->link->getAdminLink('AdminCustomers', false) ."&id_customer=".(int)$customer->id."&viewcustomer";
Выход мне нужен :
http://127.0.0.1:8080/prestashop/index.php?controller=AdminCustomers&id_customer=2&viewcustomer
Любая помощь будет оценена по достоинству.
Ответы - Отправьте письмо администратору со ссылкой BO на конкретного клиента в Prestashop 1.6 / Send a mail to Admin with a BO link to specific customer in Prestashop 1.6

06.06.2017 02:19:50
Нет (стандартного) способа узнать папку администрирования с фронт-контроллера, иначе вся безопасность будет сброшена в туалет :).
То, что вы можете сделать, - это получить папку администрирования из модуля "конфигурация" или при его установке и сохранить ее где-нибудь, на данный момент я предлагаю в базу данных, но, возможно, есть более безопасный режим.
Что-то вроде:
public function install()
{
// your stuff
$current_dir = $_SERVER['PHP_SELF']; // this give you the current dir (administration folder included)
$administration_folder = /* Clean your string with a string replace or preg */
Configuration::updateValue('PS_MYMOD_ADMIN_DIR', $administration_folder);
return true;
}
Тогда в ваш контроллер не получил:
$adminfolder = Configuration::get('PS_MYMOD_ADMIN_DIR');
Однако я надеюсь, что вы знаете, что вы создаете нарушение безопасности через электронную почту...
Надеюсь, это поможет




customer.php
и перенаправить администратора на контроллер admincustomer... Увидеть ajax.php
в папке администрирования, возможно, поможет вам



07.06.2017 08:22:33
Поскольку использование имени каталога администрирования из внешнего интерфейса и отправка ссылки на администрацию по электронной почте не является хорошей идеей для целей безопасности, я решил реализовать это другим способом.
Вместо того, чтобы отправить ссылку на страницу клиента администрации веб-мастеру по электронной почте, я создаю новый поток клиента и сообщение. После этого я отправляю электронное письмо в службу поддержки клиентов. Таким образом, когда они входят в бэк-офис, они видят новое уведомление, которое приводит их к определенному пользователю.
Вот этот код :
ModuleFrontController
// Create a new Customer Thread
$ct = new CustomerThread();
if (isset($customer->id)) {
$ct->id_customer = (int)$customer->id;
}
$ct->id_shop = (int)$this->context->shop->id;
$ct->id_contact = $contact->id;
$ct->id_lang = (int)$this->context->language->id;
$ct->email = $customer->email;
$ct->status = 'open';
$ct->token = Tools::passwdGen(12);
$ct->add();
// Add a new message to the Customer Thread
if ($ct->id) {
$cm = new CustomerMessage();
$cm->id_customer_thread = $ct->id;
$cm->message = $message;
$cm->ip_address = (int)ip2long(Tools::getRemoteAddr());
$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
$cm->add();
}
Надеюсь, это поможет кому-то в той же ситуации.