Как связать сущность с модулем Views в Drupal и установить КОНТЕКСТНЫЕ ФИЛЬТРЫ и СВЯЗИ?

Аватар пользователя natalikarn natalikarn 26 октября в 20:42

Образовался по ходу работы вопрос..

Каким образом установить КОНТЕКСТНЫЕ ФИЛЬТРЫ и СВЯЗИ во вьюсе, если в него выведена самодельная сущность, т.е. по сути вьюс окромя полей таблицы ничего больше и не видит, а мне надо отфильтровать выведенные данные по текущему пользователю. Как вытащить id юзера туда?

Подскажите люди добрые)) куда копать?

Комментарии

Аватар пользователя natalikarn natalikarn 27 октября в 21:23

Сущность создала программно своим модулем, таблица наполняется тоже программно, вывела ее во вьюс но вижу только поля и нет возможности добавить связь и вытащить текущего юзера, чтобы по нему отфильтровать, из коробки нет видимо, я 3 дня ищу и пока не нашла

Аватар пользователя natalikarn natalikarn 28 октября в 14:48

Вопрос еще актуален..
Я заметила, что во вьюсе я вообще не вижу в списке выбора user, даже в тех материалах, которые созданы посредством друпал.

Пошла таким путем:
1. Создала второе представление с текущим юзером в виде ссылки на сущность и добавила в первое представление, чтобы отфильтровать результаты по текущему пользователю, сначала показалось, что это работает но в итоге, все таки нет. Начала вылетать такая ошибка

Notice: Trying to access array offset on value of type null in Drupal\views\Plugin\views\display\EntityReference->query() (line 196 of core/modules/views/src/Plugin/views/display/EntityReference.php).

Drupal\views\Plugin\views\display\EntityReference->query() (Line: 1301)
Drupal\views\ViewExecutable->build(NULL) (Line: 1391)
Drupal\views\ViewExecutable->execute() (Line: 263)
Drupal\views_field_view\Plugin\views\field\View->render(Object) (Line: 1156)
Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238)
template_preprocess_views_view_field(Array, 'views_view_field', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 1747)
Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 771)
Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 710)
Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 577)
Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 468)
Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2170)
Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1533)
Drupal\views\ViewExecutable->render() (Line: 131)
Drupal\views\Plugin\views\display\Block->execute() (Line: 1630)
Drupal\views\ViewExecutable->executeDisplay('block_1', Array) (Line: 77)
Drupal\views\Element\View::preRenderViewElement(Array) (Line: 59)
Drupal\views\Plugin\Block\ViewsBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 444)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 372)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->block_content(Array, Array) (Line: 184)
Twig\Template->displayBlock('content', Array, Array) (Line: 146)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 108)
__TwigTemplate_476cf2dbe2c1e9d2ab146aebc400a905a6b9939e5e5d8bfe6ab734c9bf166b37->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 147)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 148)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) (Line: 78)
Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy->dispatch(Object, 'kernel.view') (Line: 163)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 705)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Сообщение об ошибке
×
Notice: Trying to access array offset on value of type null in Drupal\views\Plugin\views\display\EntityReference->query() (line 196 of core/modules/views/src/Plugin/views/display/EntityReference.php).
Drupal\views\Plugin\views\display\EntityReference->query() (Line: 1301)
Drupal\views\ViewExecutable->build(NULL) (Line: 1391)
Drupal\views\ViewExecutable->execute() (Line: 263)
Drupal\views_field_view\Plugin\views\field\View->render(Object) (Line: 1156)
Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238)
template_preprocess_views_view_field(Array, 'views_view_field', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 1747)
Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 771)
Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 710)
Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 577)
Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 468)
Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2170)
Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1533)
Drupal\views\ViewExecutable->render() (Line: 131)
Drupal\views\Plugin\views\display\Block->execute() (Line: 1630)
Drupal\views\ViewExecutable->executeDisplay('block_1', Array) (Line: 77)
Drupal\views\Element\View::preRenderViewElement(Array) (Line: 59)
Drupal\views\Plugin\Block\ViewsBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 444)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 372)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->block_content(Array, Array) (Line: 184)
Twig\Template->displayBlock('content', Array, Array) (Line: 146)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 108)
__TwigTemplate_476cf2dbe2c1e9d2ab146aebc400a905a6b9939e5e5d8bfe6ab734c9bf166b37->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 147)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 148)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) (Line: 78)
Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy->dispatch(Object, 'kernel.view') (Line: 163)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 705)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
Сообщение об ошибке
×
Notice: Trying to access array offset on value of type null in Drupal\views\Plugin\views\display\EntityReference->query() (line 196 of core/modules/views/src/Plugin/views/display/EntityReference.php).
Drupal\views\Plugin\views\display\EntityReference->query() (Line: 1301)
Drupal\views\ViewExecutable->build(NULL) (Line: 1391)
Drupal\views\ViewExecutable->execute() (Line: 263)
Drupal\views_field_view\Plugin\views\field\View->render(Object) (Line: 1156)
Drupal\views\Plugin\views\field\FieldPluginBase->advancedRender(Object) (Line: 238)
template_preprocess_views_view_field(Array, 'views_view_field', Array) (Line: 287)
Drupal\Core\Theme\ThemeManager->render('views_view_field', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 1747)
Drupal\views\Plugin\views\field\FieldPluginBase->theme(Object) (Line: 771)
Drupal\views\Plugin\views\style\StylePluginBase->elementPreRenderRow(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 710)
Drupal\views\Plugin\views\style\StylePluginBase->renderFields(Array) (Line: 577)
Drupal\views\Plugin\views\style\StylePluginBase->renderGrouping(Array, Array, 1) (Line: 468)
Drupal\views\Plugin\views\style\StylePluginBase->render(Array) (Line: 2170)
Drupal\views\Plugin\views\display\DisplayPluginBase->render() (Line: 1533)
Drupal\views\ViewExecutable->render() (Line: 131)
Drupal\views\Plugin\views\display\Block->execute() (Line: 1630)
Drupal\views\ViewExecutable->executeDisplay('block_1', Array) (Line: 77)
Drupal\views\Element\View::preRenderViewElement(Array) (Line: 59)
Drupal\views\Plugin\Block\ViewsBlock->build() (Line: 171)
Drupal\block\BlockViewBuilder::preRender(Array)
call_user_func_array(Array, Array) (Line: 100)
Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 781)
Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 372)
Drupal\Core\Render\Renderer->doRender(Array) (Line: 444)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 372)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->block_content(Array, Array) (Line: 184)
Twig\Template->displayBlock('content', Array, Array) (Line: 146)
__TwigTemplate_60f80d62f8ceaec7e7d704f359b3b45850f4de37a03ef0cdd568e3d1893fdc95->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/page.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('page', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 450)
Drupal\Core\Template\TwigExtension->escapeFilter(Object, Array, 'html', NULL, 1) (Line: 108)
__TwigTemplate_476cf2dbe2c1e9d2ab146aebc400a905a6b9939e5e5d8bfe6ab734c9bf166b37->doDisplay(Array, Array) (Line: 407)
Twig\Template->displayWithErrorHandling(Array, Array) (Line: 380)
Twig\Template->display(Array) (Line: 392)
Twig\Template->render(Array) (Line: 65)
twig_render_template('themes/bootstrap_barrio/templates/layout/html.html.twig', Array) (Line: 384)
Drupal\Core\Theme\ThemeManager->render('html', Array) (Line: 431)
Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 200)
Drupal\Core\Render\Renderer->render(Array) (Line: 147)
Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 573)
Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 148)
Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90)
Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) (Line: 78)
Symfony\Component\EventDispatcher\LegacyEventDispatcherProxy->dispatch(Object, 'kernel.view') (Line: 163)
Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 80)
Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 57)
Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 106)
Drupal\page_cache\StackMiddleware\PageCache->pass(Object, 1, 1) (Line: 85)
Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 47)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 52)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 23)
Stack\StackedHttpKernel->handle(Object, 1, 1) (Line: 705)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)

Я использую версих php 7.4, подозреваю, что проблема в этом, так-как точно такой-же вариант работает в друпал 8 с версией 7.3.

Есть идеи почему я не вижу в списке вьюса пользователей? Связано ли это с друпал 9 и версией php?

Аватар пользователя vlucas vlucas 28 октября в 14:52

Это связано только с тем, что вы делаете что-то не так...
С версиями никак не связано.

Аватар пользователя natalikarn natalikarn 28 октября в 15:51

Я и ищу ответ на то, что я делаю не так? Версия друпал 9 чистая, есть проблема, которой нет на 8-й.

Почему -то я никак средствами вьюса не могу вытащить текущего юзера и применить по нему фильтр? А вытащив его через ссылку на сущность вылетает эта ошибка но и собственная фильтр все-равно не работает, а точно такая-же ситуация работает в восьмерке