<?php
use Drupal\user\Entity\User;
function
hello_hello_world() {
$query = \Drupal::database()->insert('basket');
$query->fields([
'good_type' => 'notebook',
'article' => 1,
'price' => 600,
'user_name' => user,
'date' => time(),
]);
$query->execute();
}
function
hello_welcome() {
$user = User::load(\Drupal::currentUser()->id());
$query = \Drupal::database()->select('basket', 'nfd');
$query->fields('nfd', ['good_type', 'article','price', 'date']);
$query->condition('nfd.user_name', 'user');
$result = $query->execute()->fetchAll();
return
t($result[0]->user_name);
}?>
Пишу модуль для отображения корзины столкнулся с проблемой
как вытаскивать значения из $result?
Комментарии
Не проще ли воспользоваться уже готовыми наработками, а не плодить "велосипеды"? Тот же basic_cart сейчас очень даже юзабелен
Нет
Да.
Как минимум, можно использовать выше предложенный модуль как образец и учебное пособие.
Drupal - OpenSource.
Т.е. исходники Drupal и его модулей полностью открыты для изучения.
Если задача не слишком "экзотическая", всегда можно найти готовое решение подобной задачи и подсмотреть реализацию.
Это не стыдно, и даже наоборот-)
Пишите лучше где у меня ошибка
переменная $query имеет класс: web/core/lib/Drupal/Core/Database/Query/Select.php
метод execute() возвращает объект, реализующий интерфейс: web/core/lib/Drupal/Core/Database/StatementInterface.php
Метод fethAll() данного объекта возвращает массив:
<?php
/**
* >>> Returns an array containing all of the result set rows. <<<
*
* @param $mode
* One of the PDO::FETCH_* constants.
* @param $column_index
* If $mode is PDO::FETCH_COLUMN, the index of the column to fetch.
* @param $constructor_arguments
* If $mode is PDO::FETCH_CLASS, the arguments to pass to the constructor.
*
* @return
* An array of results.
*/
public function fetchAll($mode = NULL, $column_index = NULL, $constructor_arguments = NULL);
?>
Осталось только придумать, как вытащить значение из массива.
посмотреть структуру элемента массива можно так: var_dump($result[0]);
https://www.php.net/manual/ru/function.var-dump.php
Помимо var_dump, есть ещё dpm. Но для этого нужно установить devel
Если хотите писать модули и работать в т.ч. с db layer смотрите код рабочих модулей и лучше ядерных, в дополнение examples
спасибо получил значение, но наткнулся на другую проблему, по отдельности $result[0]->article и др. показыает без проблем но вместе даже без html тегов выводит ошибку The website encountered an unexpected error. Please try again later.
<?php
$aa="
<a> Тип Товара: $result[0]->good_type</a><br>
<a>Артикул: $result[0]->article</a><br>
<a>Дата: $result[0]->date</a><br>
<a>Цена: $result[0]->price</a><br>
"
;return t($aa);
?>
Во-первых, вы не должны таким образом формировать HTML
Во-вторых, вы не должны прогонять его через систему переводов
В-третьих, в Drupal 8 уже нет функции t()
https://api.drupal.org/api/drupal/core%21includes%21bootstrap.inc/functi...
спасибо помогло