Помогите, пожалуйста, разобраться с вопросом. Как можно написать функцию в модуле, а потом вызвать ее в js?
Например, есть функция перевода t(..), которая в js используется вызовом Drupal.t(..).
P.S. Знаю, что можно вызывать код php через ajax, но метод мне не подходит.
Комментарии
Жаль, другого выхода нет - php в js не выполняется.
Можете написать аналог ф-ции в JS-файле, и к ней уже обращаться.
Проблема в том, что как раз реализацию и параметры функции надо скрыть в целях безопасности. Если писать через ajax, то придется передавать ид пользователя, то явная дырка в безопасности. А так функция должна вносить правки в БД...
Почему?
Как Вы представляете себе соединение с БД сервера из клиента?
Если бы в ajax можно было бы вычислить ид юзера, то все было бы хорошо, но он выполняется в иной сессии, то есть вычислить ИД юзера не представляется возможным, поэтому выходом является передача параметров. Всегда можно подставить параметр в js ИД другого юзера, что приведет к правке данных не у текущего. Вот такая лазейка...
Представляю правку бд через функцию в php, которую и хочу вызывать (по аналогии с функцией Drupal.t). Она-то выполняется всегда в сессии пользователя.
Возможно, я чего-то еще сам не понимаю, т.к. всего 2 месяца в этом варюсь и это мой первый сайт... Как эти хедеры получить в вызываемом php-файле?..
Я вот чего смог наварить:
<?php
use Drupal\Core\DrupalKernel;
use Drupal\Core\Database\Connection;
use Symfony\Component\HttpFoundation\Request;
use Drupal\Core\Session\AccountInterface;
$autoloader = require_once 'autoload.php';
$kernel->boot();
$useruid = \Drupal::currentUser()->id(); /* тупо всегда = 0, т.к. новая сессия и неавторизированный юзер!*/
if (!empty($_GET['uid'])) {
$useruid = $_GET['uid'];
}
/* бла-бла-бла.. формируем массив данных $arr по $useruid ! */
echo json_encode($arr);
?>
Вот решил попробовать найти сессию:
<?php
$request = Request::createFromGlobals();
$session = $request->getSession();?>
$session всегда NULL
Только если бездумно писать в базу.
Используйте токен для проверки.
Посмотрите аякс-команды, на них все можно реализовать, а о безопасности будет беспокоится движок.
Попробую разобраться, что такое токен и с чем его едят...
Сложно всё как и запутанно... Есть какой-нибудь пример кода проверки?..
Наверняка, эта задача часто встречается
а бывает и так:
https://www.youtube.com/watch?v=rTcC0maPLSA&list=PLZOQ_ZMpYrZtqy5-o7KoDh...
@pingvin156 приятного просмтора)