编辑对象奏鸣曲管理包
Posted
技术标签:
【中文标题】编辑对象奏鸣曲管理包【英文标题】:Edit Object Sonata admin bundle 【发布时间】:2018-08-11 06:27:48 【问题描述】:我想编辑包含在 Parametre 对象(OneToOne 关联)中的子对象 Pourcentage,但是当我单击编辑时,它会将我重定向到 Parametre 的版本而不是 Pourcentage
我想在我的自定义模板中执行此操作:
<a href=" admin.generateObjectUrl('edit', parametre.pourcentage) " class="btn btn-sm btn-default edit_link" title=" 'action_edit'|trans(, 'SonataAdminBundle') ">
<i class="fa fa-pencil" aria-hidden="true"></i>
'action_edit'|trans(, 'SonataAdminBundle')
</a>
感谢您的帮助
【问题讨论】:
你能告诉我你的管理员课程,我可以帮你吗?:) 你可以在下一个答案中看到我的管理类:) 【参考方案1】:class ParametreAdmin extends AbstractAdmin
protected $baseRoutePattern = 'parametre';
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->add("pourcentage", "sonata_type_admin")
->add("mise", "sonata_type_admin");
$this->preUpdate($formMapper);
public function preUpdate($object)
$entityCreate = $this->getSubject();
$user = $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();
$entityCreate->setUser($user);
class PourcentageAdmin extends AbstractAdmin
protected $baseRoutePattern = 'pourcentage';
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->add("pourcentageMise", 'text');
【讨论】:
【参考方案2】:首先,您不需要从 configureFormFields 调用 preUpdate,因为 preUpdate 会在更新之前调用! 1.我不确定我是否理解您单击编辑等的位置,如果这不适合您,请给我更多信息! 2.如果你想在更新前设置用户并持久化,你可以这样做:
class ParametreAdmin extends AbstractAdmin
protected $baseRoutePattern = 'parametre';
protected function configureFormFields(FormMapper $formMapper)
$formMapper
->add("pourcentage", "sonata_type_admin")
->add("mise", "sonata_type_admin");
;
protected function configureListFields(ListMapper $list)
..........................
$list->add('_action', null, array(
'actions' => array(
'custom_show' => array('template' => 'YOURBundle:PATH:TEMPLATE_NAME.html.twig')
)
));
protected function getUser()
return $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();
public function prePersist($object)
$user = $this->getUser;
$object->setUser($user);
public function preUpdate($object)
$user = $this->getUser;
$object->setUser($user);
【讨论】:
以上是关于编辑对象奏鸣曲管理包的主要内容,如果未能解决你的问题,请参考以下文章