Я пытаюсь сделать запрос к моей базе данных и вернуть число для хранения в шаблоне ветки с именем node - course.html.twig
Поэтому я начал с написания функции завершение проверки () в классе FormaRegis.php
<?php
namespace Drupal\docebo_login;
use Drupal\docebo_login\FormaEntity;
class FormaRegis extends FormaEntity {
public $ID;
public function setID($ID) {
$this->ID = $ID;
}
public function getID() {
return $this->ID;
}
public function __construct() {
parent::__construct();
}
public function rowBase() {
if (parent::accessCheck()) {
$sql = "SELECT * FROM learning_courseuser
WHERE idUser = " . $_SESSION['public_area_idst'] .
" AND idCourse = " . $this->ID. " ";
return $sql;
} else {
return "";
}
}
public function completionCheck() {
$check = false;
if (parent::accessCheck()) {
$sql = "SELECT count(*) FROM learning_courseuser
WHERE DATE_FORMAT(CURDATE(),'%d/%m/%Y') = DATE_FORMAT(date_complete,'%d/%m/%Y')
AND idUser = " . $_SESSION['public_area_idst'];
return $sql;
}
else {
return "";
}
}
}
и на странице с именем FormaEntity.php Я написал эту функцию
public function getCCresult() {
if ($this->completionCheck() == "") {
\Drupal\Core\Database\Database::setActiveConnection();
return false;
}
$result = $this->connection->query($this->completionCheck())->fetch();
\Drupal\Core\Database\Database::setActiveConnection();
if ($result > 5 ) {
$check = "fail";
}
else {
$check = "pass";
}
return $check;
}
Затем в FormaNotification.php Я написал функцию завершение проверки ()
<?php
namespace Drupal\docebo_login;
use Drupal\docebo_login\FormaEntity;
class FormaNotification extends FormaEntity {
public function __construct() {
parent::__construct();
}
public function getResult() {
return parent::accessCheck();
}
public function completionCheck() {
return parent::getCCresult();
}
}
Затем, наконец, в моем файле .theme я добавил функцию mytheme_preprocess_node_course (& $ variable)
function mytheme_preprocess_node_course (&$variables) {
$noti = new FormaNotification();
if ($noti->completionCheck() == "fail") {
$variables['creditCheck'] = "yes";
}
else {
$variables['creditCheck'] = "no";
}
}
Но когда я захожу на любую страницу, использующую узел, - course.html.twig и использую {{kint (creditCheck)}}, это говорит о том, что переменная в NULL.Я не уверен, что я делаю неправильно.Если кто-нибудь может указать мне правильное направление, это было бы здорово.