Symfony Omines DataTables添加编辑操作

时间:2019-04-29 11:38:08

标签: symfony datatable

我正在使用Omines捆绑包创建DataTables,我想创建一个运行动作的按钮。 当我单击此按钮时,我想使用其用户ID重定向到用户页面。 我该怎么办?

例如:

enter image description here

这是我的代码:

public function index(Request $request, UserRepository $repo)
    {
        $table = $this->createDataTable()
            ->add('login', TextColumn::class, ['label' => 'Login'])
            ->add('name', TextColumn::class, ['label' => 'Nom'])
            ->add('school', TextColumn::class, ['label' => 'Ecole'])
            ->add('region', TextColumn::class, ['label' => 'Région'])
            ->add('limitDate', TextColumn::class, ['label' => 'Date Limite'])
            ->add('status', TextColumn::class, ['label' => 'Status'])
            ->add('actions', TextColumn::class, ['label' => 'Actions'])
            ->createAdapter(ORMAdapter::class, [
                'entity' => User::class
            ])
            ->handleRequest($request);

    if ($table->isCallback()) {
        return $table->getResponse();
    }

    return $this->render('users/index.html.twig', [
        'controller_name' => 'UsersController',
        'datatable' => $table
    ]);
}

2 个答案:

答案 0 :(得分:0)

要添加按钮-添加带有指向用户页面的路由的链接,该链接带有相应的用户ID。您可以尝试添加css类,因此链接的样式为按钮。

$table
    ->add('id', TextColumn::class, ['render' => function($value, $context) {
        return sprintf('<a href="/user/%u">User page</a>', $value);
    });

答案 1 :(得分:0)

我建议使用$this->generateUrl('user_page_route_name', [ROUTE PARAMS]),而不要手动输入网址

所以您的结果应类似于:

$table
    ->add('id', TextColumn::class, ['render' => function($value, $context) {
        return sprintf('<a href="%s">User page</a>', $this->generateUrl('user_page_route_name', [ROUTE PARAMS]));
    });

通过这种方式,您可以避免在用户页面网址更改时出现错误