Questions tagged «8»

版本标记应用于仅适用于版本的问题,而不仅仅是说明网站使用的版本。


2
以编程方式获取实体引用字段的所有名称
示例:我想获取节点5的field_tags内的所有标签名。 我可以通过$ node-> field_tags-> getValue()获得target_id ; 但是问题是,我不知道target_id值属于哪个实体。可以是节点ID,术语ID,用户ID。没有该信息,我将无法使用target_id来获取标签的名称。 如何获得实体引用字段的所有名称?
10 8  entities 

1
在控制器中调用服务的正确方法
我是服务(以及drupal 8!)的新手,正在尝试弄清楚服务。我认为也许我只是在以过时的方式进行创建。我想要做的是使“ hello generator”成为服务,并使用以下命令在另一个控制器中调用它: DBController.php namespace Drupal\db\Controller; use Drupal\Core\Controller\ControllerBase; use Drupal\db\DbServices\HelloGenerator; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\HttpFoundation\Response; class DBController extends ControllerBase { private $helloGenerator; public function __construct(HelloGenerator $x) { $this->helloGenerator = $x; } public function say($count) { $hello = $this->helloGenerator->getHello($count); return new Response($hello); } public static function create(ContainerInterface $container) { $x = …

2
如何从视图ID和显示ID获得显示名称?
我可以使用加载视图$view = Views::getView('my_view_id');,但是如何使用该对象加载display_title或说一个包含包含显示名称的信息的数组? 注意:不要将其与加载打印视图时可能使用的显示标题混淆,因为有一种方法可用于(getTitle())。
10 views  8 

3
如何从树枝模板中查找图像样式的URL?
我正在实现使用两次图像的节点模板;一次以“正常”方式(即,使用该视图模式在字段的显示配置中定义的图像样式),另一次作为css背景图像属性。 我需要以下两件事之一: (理想情况下)一种获取同一图像的不同图像样式的URL的方法。 一种获取图像字段URL的方法。 我正在努力使用dump()并kint()帮助自己找到答案。它们都输出太多(由于嵌入了到“父”等的链接),并且似乎没有我需要的信息。例如,查看dump(content.field_image)输出时,图像的实际URL不存在(因此它来自何处,从而可以使用{{ content.field_image }}?!进行渲染)。kint()另一方面,如果我给它传递一个参数,它会完全死掉,而顶级版本又太大了,无法导航。使用phptemplate + xdebug进行调试非常容易。(是的,我知道用户不能删除数据库是很好的。) 对于(1),有一个答案表示您无法执行此操作,但是我不明白为什么我无法在(2)中获得现有的URL?
10 theming  8  media 


2
如何在预处理函数中为Twig模板添加变量?
我正在使用以下代码对模板的变量进行预处理: function template_preprocess_imagegallery_format(&$vars) { template_preprocess_image_formatter($vars); $vars['image']['#theme'] = 'igimage'; $vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']); $vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']); } #uri变量已经存在,如果我只修改它,一切都可以正常工作。但是我需要在此处添加其他变量,因为我需要同一张图片的两种不同样式。但是,仅将这些变量添加到数组中是行不通的。 如果我使用来将Twig模板中的可用变量转储{{ dump(_context|keys) }},则看不到在其中添加的变量。如果我尝试在模板中使用它们,则不会插入任何内容。 我可以看到这些值已添加到数组中,当我在呈现整个字段的主题中转储图像变量时,我会在数组中看到变量。但是它们在渲染图像变量本身的模板中仍然不可用。 要在Twig模板中可以使用的预处理函数中添加变量,我还需要做什么?
10 8  theming 

3
将一个实体表单嵌入到另一个实体表单中,然后保存两者
我有一个自定义实体,这取决于用户实体。实际上,即使如此,我仍然认为有必要在用户个人资料表单中显示我的实体表单: 我现在遇到的问题如下:有2个保存按钮。并且,如果还不够好,则用户(下一个)的保存按钮甚至不再起作用,并且白色标签保存按钮仅保存白色标签实体。 将该表单更改为用户表单,如下所示: function whitelabel_form_user_form_alter(&$form, FormStateInterface $form_state) { $whitelabel = WhiteLabel::load(1); $whitelabel_form = \Drupal::service('entity.manager') ->getFormObject('whitelabel', 'default') ->setEntity($whitelabel); $form['whitelabel'] = array( '#type' => 'details', '#title' => t('White label settings'), '#open' => TRUE, 'form' => \Drupal::formBuilder()->getForm($whitelabel_form), ); } 我希望改组$whitelabel_form数组中的某些参数(以前在Drupal 7中使用过),但是该数组很大,无法找到所需的提交按钮和处理程序。 所以问题是,可以做到吗?推荐的方法是什么?
9 8  forms  users 

5
我如何找到可用的公共方法?
我发现使用Drupal 8的最大问题是我无法获取所需的数据。Drupal 8希望我使用公共方法,而不是通过对象手动向下钻取。问题是,我无法弄清楚获得可用方法列表的一致方法!(它们神奇地存在,我觉得我应该知道它们)。= 对于此示例,假设我有一个带有视频字段的内容类型。我需要在该字段中获取视频文件的原始URL。 因此,我将从节点ID($ nid)开始,以某种方式我必须弄清楚如何加载该节点。这还不错,因为有很多示例。所以我做类似的事情$node = \Drupal\node\Entity\Node::load($nid);。 到目前为止,一切都很好。然后,我需要获取视频字段(field_main_video)的值。这使我永远都想不通,因为'net周围存在冲突的文档。最终我发现我必须做这样的事情(因为它是一个多值项): $video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue(); ...然后遍历数组等。使用kint也不帮助我找到这个。因为例如,如果我kint($node)查看方法下的内容,则不会在其中看到getValue()。仍然不可怕,因为周围有足够的示例可以弄清楚。 不过,当我深入研究时,我不知道(这是重要的部分)是,不是获取视频字段实体ID,而是加载实体,然后在实体中找到“ uri”字段,等等(例如我在D7中会:)有一种方法可以让我在同一行代码中全部获取URI! $url = \Drupal\node\Entity\Node::load($nid)->field_main_video->entity->getFileUri(); 但是我怎么可能知道这个getFileUri()存在呢? 我在博客文章中偶然发现了它。确实,这样做确实比在D7中更容易获得URI……但前提是您(神奇地)知道对象的每个“层”都有哪些方法。 最后,在这个示例中,我想问:如何以一种易于阅读和理解的方式为对象的每个级别找到所有公共方法? 注意,似乎应该有一种以drupal为中心的方式(即devel模块),而不是手动搜索api.drupal.org或使用特定于IDE的方式?
9 8  entities 

1
“依靠系统的时区设置是不安全的。”
我在“ 最近的日志消息”报告中发现以下错误: 警告:DateTime :: createFromFormat():依靠系统的时区设置并不安全。您需要使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种,但仍收到此警告,则很可能会拼写时区标识符。我们现在选择了时区“ UTC”,但是请设置date.timezone以选择您的时区。在Symfony \ Component \ HttpFoundation \ Response-> sendHeaders()中(/var/www/drupal/drupal-8.1.1/vendor/symfony/http-foundation/Response.php中的第331行)。 我的网站确实包含任何自定义模块,但据我所知,它调用的唯一日期函数是time()。Drupal是否应该处理时区设置? 有什么办法可以隔离从何处调用此函数? 这不是主要问题,但我希望尽量减少日志中不必要的警告。
9 8 

4
如何从用户ID获取用户名?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 我想打印仅知道用户ID的用户名。我该如何实现?
9 users  8 

4
遍历Twig中的子元素,例如Element :: children()
在PHP中处理可渲染数组时,我可以使用Element :: children()来访问不是#属性而是从属可渲染元素的元素(字段集中的表单项,字段小部件内的项等)。例如,来自file.module的此代码段: <?php if ($element['#multiple']) { foreach (Element::children($element) as $name) { // ... } } ?> 如何在Twig模板中做同样的事情?如果我这样做{% for child in element %},它也将包括#type,#cache等等。
9 8  theming 


2
图像和媒体最佳实践
我正在寻找有关D8和文件/媒体实体最佳实践的建议。我最初将其添加为答案,但kiamlaluno显然认为这本身应该是一个新问题,因此请继续。 我试图找出处理文件和媒体实体的最佳方法。随着文件实体模块的发展,如果文件现在可以成为一个完整的实体,那么事情似乎又变得越来越复杂。在我看来,这将使很多人不知道哪种方法是最实用的方法。 我希望看到的是有关何时使用文件字段,媒体字段以及每种字段的利弊的最佳实践的教程或文章。默认情况下,Drupal 8为我们提供了Article内容类型,它是一个文件实体。因此,我们应该将其用于图像还是将其删除并使用媒体字段。 有人知道最近的教程或讨论要复习吗?
9 8  media 

4
通过composer将核心从8.2更新到8.3
我正在尝试将Drupal核心更新到8.3,但遇到了困难。 页面底部是我开始的composer.json文件。 如果我更改“ drupal / core”:“〜8.2” =>“ drupal / core”:“〜8.3”,然后运行,composer update drupal/core --with-dependencies我会收到以下问题,由于执行器中未包含这些问题,我不确定如何解决此问题我在下面包含的.json文件。 Your requirements could not be resolved to an installable set of packages. Problem 1 - drupal/core 8.3.0 requires symfony/psr-http-message-bridge ^1.0 -> satisfiable by symfony/psr-http-message-bridge[1.0.x-dev]. - drupal/core 8.3.x-dev requires symfony/psr-http-message-bridge ^1.0 -> satisfiable by symfony/psr-http-message-bridge[1.0.x-dev]. - drupal/core 8.4.x-dev …
9 8  updating  composer 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.