我创建一个自定义表单,然后检索表中的字段,然后返回分支中的表,然后将分支的内容提取到放入节点的变量中。
它没有显示图像的来源,所以我想获取数据库中保存的网址。
``In my form`
$form['image1'] = [
'#type' => 'managed_file',
'#title' => $this->t('Image 1'),
'#upload_location' => 'public://user/image/',
'#required' => FALSE,
'#upload_validators' => [
'file_validate_extensions' => ['jpg jpeg png gif'],
'file_validate_size' => [5 * 1024 * 1024],
],
];
`then i put information in $array`
$form_array = array(
'img1' => $form_state->getValue('image1'),
);
`I put my array in html`
$build = [
'#type' => 'html',
'#theme' => 'theme_project',
'#form_array' => $form_array,
];
`i put my html in variable`
$html = \Drupal::service('renderer')->renderPlain($build);
`i put in node then create it`
$node = Node::create([
'type' => 'name_content',
'title' => $form_state->getValue('form_titre'),
'field_image1' => $form_state->getValue('image1'),
]);
$node->save();
`twig file`
<img src={{ form_array.img1 }} style="width:100%">
我尝试了这个,但我没有工作
$file_url_generator=\Drupal::service('file_url_generator');
$image1 = $file_url_generator->generateAbsoluteString($form_state->getValue('field_image1'));
如果您想从媒体实体中捕获的图像获取 URL,您可以使用上述预处理函数提取它,如下所示:
function mytheme_preprocess_node(&$variables) {
/** @var \Drupal\node\NodeInterface $node */
$node = $variables['node'];
$image_field = $node->get('field_background_image');
if (!$image_field->isEmpty()) {
$uri = $image_field->entity->get('field_media_image')->entity->uri->value;
$variables['background_image_url'] = file_create_url($uri);
}
}
在节点模板中,您可以使用
显示它{{ background_image_url }}