Есть объект:
Drupal\node\Entity\Node Object
(
[in_preview] =>
[values:protected] => Array
(
[nid] => Array
(
[x-default] => 8
)
[vid] => Array
(
[x-default] => 8
)
[type] => Array
(
[x-default] => mymt
)
[langcode] => Array
(
[x-default] => ru
)
[revision_uid] => Array
(
[x-default] => 1
)
[uid] => Array
(
[x-default] => 1
)
[title] => Array
(
[x-default] => 5
)
[field_vremya] => Array
(
[x-default] => Array
(
[0] => Array
(
[value] => 5
)
)
)
)
Как получить с него значения? В частности - field_vremya
Я скопировал только часть кода объекта.
Спасибо.
Комментарии
$node->field_vremya->value
вместо value может быть другое, зависит от типа поля. Например entity_referense это target_id в обычных текстовых/числовых - value
Для наглядности - изменил код:
<?php$view = views_get_view_result('myw1');
//$view = \Drupal\views\Views::getView('myw1');
print_r ($view[0]);?>
<p>--------------</p>
<?php
$node = $view[0];
print $node->field_vremya->value;
print
'++++++';?>
не выводит
В принципе - вы мне помогли, спасибо.
Благодаря вам я зафиксировал ваше предложение в коде и потом уже подстраивался под неё.
Спасибо.
Но изначально ваше предложение не срабатывало.
Спасибо но, Так не срабатывает.
И это не Нода. Это Вьюха
ну ка бы сами написали:
Это не я написал. Это выдал код который ниже.
Тему эту тоже код ниже создал?
Вот весь код:
<?php
/**
* @return
* Contains \Drupal\summ\Controller\FirstPageController.
*/ namespace Drupal\summ\Controller; /**
* Provides route responses for the DrupalBook module.
*/
class FirstPageController { /**
* Returns a simple page.
*
* @return array
* A simple renderable array.
*/
public function content() { ob_start();
//$u = views_embed_view ('myw1'); $view = views_get_view_result('myw1'); //$view = \Drupal\views\Views::getView('myw1'); print_r ($view[0]); //print_r($view[0]->_entity->in_preview); $mytab = ob_get_contents();
ob_end_clean(); $element = array(
'#markup' => $mytab,
);
return $element;
}
}
?>Обычно свой контроллер наследуется от ControllerBase и поставьте себе для удобства devel + kint, чтобы легче было в этих "простынях" разбираться. Ну и про рендер массивы почитайте, т.к. неизвестно что пихать в '#markup' - это никогда не сработает
Этот код выдаёт тот объект что заглавии темы.
Ещё изучить роутинг в Drupal, т.к. складывается ощущение, что явно не понимаете что пишите.
Задача-то какая?
сумма цифр в столбце Вьюхи
а зачем для этого контроллер писать?
А как в 8-ке иначе писать php?
Писать php...
Для подобной задачи помоему вообще писать ничего не нужно
Ребят. Нужно сложить 5 цифр.
Все пишут что просто и ничего не нужно, а решения нет уже неделю.
Я начинал вопросы задавать с рабочего сайта, там много цифр - вообще ничего не ответили
Упростил задачу как мог - тоже ответа нет.
Если я получу это значение из объекта - задача решена.
Можно твиг функцию написать, можно воспользоваться контрибными модулями, можно даже попробовать обойтись перезаписью поля. Но контроллер тут точно не нужен
Вьюха выводит столбец с цифрами и всё.
В контенте поле выбора времени. Как раз [field_vremya]
http://russkiyslovar.ru/d8/
представление:
http://russkiyslovar.ru/d8/myw1
http://russkiyslovar.ru/d8/summ - модуль который выводит заглавный код
Немного не по сабжу, но вот этот весь код:
<?php
...
public function content() { ob_start();
//$u = views_embed_view ('myw1'); $view = views_get_view_result('myw1'); //$view = \Drupal\views\Views::getView('myw1'); print_r ($view[0]); //print_r($view[0]->_entity->in_preview); $mytab = ob_get_contents();
ob_end_clean(); $element = array(
'#markup' => $mytab,
);
return $element;
}
...
?>
успешно заменяется на:
<?php
...
public function content() {
$view = views_get_view_result('myw1');
$element = array(
'#markup' => var_export($view[0], TRUE),
);
return $element;
}
...
?>
А при наличии devel и того проще -
<?php dpm($view[0]); ?>
Это не код - Это заготовка, шаблон.
Вы правда не понимаете?
Мой друг, это именно код (это так и называется). Причём ваш и представленный вами общественности. Я вам подсказываю, как можно сделать проще - раз уж вы заморачиваетесь с такими "заготовками и шаблонами" и тем более - тянете их на форум.
вы говорите прописные истины - причём сами пишите - что не по теме.
Простите меня, грешного. Люблю глаголить прописные истины. Ниже по теме написал.
И всё же позвольте вопрос: почему тогда не используете пресловутые прописные истины?
Я уже писал - это заготовка.
Вы не понимаете что такое заготовка?
можете ту оптимизировать код?:
<?php
public function content() { $view = views_get_view_result('myw1');
foreach (
$view as $v){$sum += $v->_entity->field_vremya->value;
} $element = array(
'#markup' => $sum,
);
return $element;
}
?>
В конечном счёте, в конечном коде нужно получить эту таблицу:
http://russkiyslovar.ru/d8/myw1
С строкой суммирования внизу.
В идеале желательно чтоб это всё было бы прям в представлении. Но, как видите, представление не хочет кушать формат php
А если по сабжу и прям всё надо считать кодом, то (при условии, что вывод view - это таблица) будет как-то так:
<?php
/**
* @file mymodule.module
*/
...
/**
* Implements hook_preprocess_views_view_table()
*/
function mymodule_preprocess_views_view_table(&$variables) {
// Altering view table output.
$view = $variables['view'];
if ($view->id() == 'ID_of_my_view') {
// Walk through fields...
foreach ($variables['result'] as $num => $row) {
// ... calculation here ...
}
}
}
...
?>
Спасибо. Это под 8-ку?
Под неё, родимую.
Внутри тела цикла исследуйте $row (например, с помощью той же var_export() ) и найдите необходимые поля.
Я вывел:
<?php
$view = views_get_view_result('myw1'); //$view = \Drupal\views\Views::getView('myw1'); print_r ($view[0]->_entity); //print_r ($view[0]::$_entity); ?>
<p>--------------</p>
<?php
$node = $view[0]->_entity;
print $node->field_vremya->value;
print
'++++++';?>
http://russkiyslovar.ru/d8/summ
Всё вывел. Всё просуммировал.
Как теперь это всё в Вьюху засунуть? Блоком?
Нет. Как раз Хуком! Неужели я слеплю эту хрень?