I'm trying to pass alternative text to image field.
if (Crud::PAGE_INDEX === $pageName) {
return [$id, $image->setTemplatePath('easy_admin/block/_images_list.html.twig')->setCustomOptions(['alt' => (String) $title, 'width' => 50, 'action' => 'detail']),
$entityVal, $mimeType, $size];
}
Hint:- Here $title
is another field such as $id
,$mimeType
etc.
ERROR
Object of class EasyCorp\Bundle\EasyAdminBundle\Field\TextField could not be converted to string
Question:- Can we pass value of one field to another in EASYADMIN PAGE_INDEX or do we have to hack the twig?
Yes I done this in twig.
I have two entity Page and User.
From PageEntity:-
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
private ?User $author = null;
#[ORM\Column(length: 255, unique: true)]
#[Assert\NotBlank()]
#[Assert\Length(min: 3, max: 255)]
private ?string $title = null;
#[ORM\Column(length: 255)]
#[Gedmo\Slug(fields: ["title"], updatable: false, separator: "-")]
private ?string $slug = null;
From UserEntity:-
#[ORM\Column(length: 180, unique: true)]
private ?string $email = null;
#[ORM\Column(length: 45, unique: true)]
#[Assert\NotBlank()]
#[Assert\Length(min: 3, max: 45)]
private ?string $username = null;
#[ORM\Column(length: 64, unique: true)]
#[Gedmo\Slug(fields: ['username'])]
private ?string $slug = null;
AdminCrud PAGE:-
public function configureFields(string $pageName): iterable {
$author = AssociationField::new('author');
$slug = TextField::new('slug')->setRequired(false);
$title = TextField::new('title');
if (Crud::PAGE_INDEX === $pageName) {
return [$title->setTemplatePath('easy_admin/block/_pages_list_title.html.twig'), $slug, $author]
}
}
_pages_list_title.html.twig
{% set editUrl = ea_url()
.setController(ea.crud.controllerFqcn)
.setAction('detail')
.setEntityId(entity.primaryKeyValue) %}
<a href="{{ editUrl }}" id="Edit_{{ entity.primaryKeyValueAsString }}">
{{ '('~entity.primaryKeyValueAsString ~') '~field.formattedValue }}
</a>
// More details
{{ field.label }} // This prints the current field label
{{ entity.fields.getByProperty('author').value.email }} // Prints author email
For field refer EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto
class and for entity refer EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto
class.
MORE DETAILS
This entity.fields.getByProperty('author')
is again EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto
. Here 'author'
is AssociationField
so to get its field values just use entity.fields.getByProperty('author').value.username