Reputation: 449
How would I pass an array of variables to SonataMediaBundle:MediaAdmin:list_image.html.twig
?
There does not seem to be any option available.
class MediaAdmin extends Admin
{
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('image', 'string', array(
'template' => 'SonataMediaBundle:MediaAdmin:list_image.html.twig',
array('data'=>'something')<<- This is not working
))
->add('custom', 'string', array(
'template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'
))
;
}
}
Template:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{{dump(data)}} <<- This is not working
{% endblock %}
I just want to pass a variable value to SonataMediaBundle:MediaAdmin:list_image.html.twig
.
Upvotes: 7
Views: 12610
Reputation: 141
Let try this solution : AdminClass :
protected function configureListFields(ListMapper $listMapper){
->add('_action', 'actions', [
'actions' => [
'replay' => [
'template' => 'MyAdminBundle:CRUD:list__action_replay.html.twig',
'data' => 'My custom datas pass to the template'
]
]
]);
}
Template list__action_replay.html.twig
{{ dump(field_description.options.actions.replay.data)}}
Have fun just with :
{{ dump(field_description.options)}}
Upvotes: 1
Reputation: 7055
class MediaAdmin extends Admin
{
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('image', 'string', array('template' => 'SonataMediaBundle:MediaAdmin:list_image.html.twig','data'=>'something'))
->add('custom', 'string', array('template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'))
;
}
}
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
{{field_description.options.data}}
{% endblock %}
Upvotes: 3
Reputation: 747
Be Aware of renamed variables. My 5 cents. Versions: Symfony 2.6, Sonata Admin 2.3
I was overriding sonata_type_collection_widget. I did set variable in Admin class, but lost an hour trying to figure out how to access admin variable. Actually you can call methods and access variables from admin class.
Here's how it's done in 2.3:
{% block sonata_type_collection_widget %}
{{ dump(sonata_admin.admin.test1) }}
{% endblock sonata_type_collection_widget %}
Upvotes: 0
Reputation: 191
Just elaborating Tigran's answer.
class MediaAdmin extends Admin
{
public $data = '';
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('custom', 'string', array('template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'))
;
$this->data = 'something';
}
}
and in your template:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
<div>
{{ admin.data }}
</div>
{% endblock %}
and if you have an array indexed by object's id, you can access it this way:
{{ attribute( admin.data, object.id) }}
Upvotes: 17
Reputation: 52
Put custom data to an member of admin class . then call it from list field template.
public $customData = array(1,2,3);
Then in twig call it.
Upvotes: 0