小编lui*_*e89的帖子

如何从具有实体列表(CRUD)的模板中删除实体?

说明:

我已经生成了一个实体的CRUD,获得了以下默认操作:

  • indexAction():列出所有实体.
  • showAction($ id):查找(按ID)并显示实体.
  • deleteAction($ id):删除实体.
  • 另一个动作.

所以,我已经看到我只能删除使用param $ id的动作中的实体(例如:showAction($ id))但是我想删除indexAction模板中的实体,因为我向用户保存了一个步骤.

deleteAction需要一个请求,一个ID并使用POST方法.

我试图编写类似的代码:

<a href="{{ path('entity_delete', { 'id': entity.id }) }}" class="btn">
 <img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
</a>
Run Code Online (Sandbox Code Playgroud)

当我执行该操作时,我收到以下错误:

找不到"GET/acme/something/4/delete"的路由:方法不允许(允许:POST,DELETE)

这个反应是明确的,这是我的预期,所以我尝试做类似的事情,但使用表格.像这样的东西:

<form id="formDelete" action="{{ path('entity_delete', { 'id': entity.id }) }}" method="post">
    <input type="hidden" name="_method" value="DELETE" />
    {{ form_widget(delete_form) }}
    <a href="{{ url('entity_delete') }}" class="btn" onclick="document.getElementById('formDelete').submit();">
        <img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
    </a>
</form>
Run Code Online (Sandbox Code Playgroud)

但该行{{ form_widget(delete_form) }}是一个问题,因为indexAction()它没有任何参数,它需要这个代码:

$deleteForm = $this->createDeleteForm($id);
return …
Run Code Online (Sandbox Code Playgroud)

forms crud symfony symfony-2.3

7
推荐指数
1
解决办法
7805
查看次数

Symfony2:如何使用OAuth(HWIOAuthBundle)+自定义角色登录(默认情况下从DB加载)

注意:问题在本文末尾,但我将详细解释所有上下文以便更好地理解.

我正在开发一个由3个模块组成的Symfony2应用程序:

  1. 学生模块 - >需要角色ROLE_STUDENT
  2. 教师模块 - >需要角色ROLE_TEACHER
  3. 管理员模块 - >需要角色ROLE_ADMIN

角色的层次结构如下:

  • ROLE_TEACHER:[ROLE_STUDENT]
  • ROLE_ADMIN:[ROLE_TEACHER]

因此:

学生(具有ROLE_STUDENT角色)只能访问他/她模块的所有页面,例如:

教师(具有ROLE_TEACHER角色)可以访问学生模块的所有页面和教师模块的所有页面,例如:

管理员(具有ROLE_ADMIN角色)可以访问学生模块的所有页面,教师模块的所有页面和管理员后端.

系统使用OAuth使用捆绑包HWIOAuthBundle(使用提供捆绑包的 OAuthUserProvider用户提供程序)通过Twitter对学生和教师进行身份验证.

我已成功验证用户身份,但默认情况下,所有用户都会自动使用以下角色进行身份验证: [ROLE_USER,ROLE_OAUTH_USER]


所以这就是我所做的.下面,我将解释我想要的应用程序,但我不知道如何:

使用OAuth登录的步骤:

用户登录系统并自动:

  • 如果数据库中不存在该用户:
    - 将昵称保存在数据库的users表中.
    - 在数据库的users表中保存角色ROLE_STUDENT(这是我默认的角色).
    - 使用OAuth在系统中进行身份验证,但使用ROLE_STUDENT角色.

  • 如果用户存在于数据库中:
    - 检查数据库中用户关联的角色.
    - 使用OAuth在系统中验证用户,但使用数据库中关联的角色(即:ROLE_STUDENT或ROLE_TEACHER).

管理员(来自管理后端)可以查看昵称列表(由Twitter使用但保存在数据库中)以及每个昵称的已分配角色.管理员应该能够在ROLE_STUDENT和ROLE_TEACHER之间更改用户的角色.


问题:

  1. 我如何通过OAuth(HWIOAuthBundle)以默认角色(ROLE_STUDENT,如上所述)通过OAuth(HWIOAuthBundle)进行身份验证?

  2. 如果数据库中存在具有关联角色的昵称(ROLE_STUDENT或ROLE_TEACHER),我如何通过OAuth(HWIOAuthBundle)验证用户,但使用从数据库加载的角色?

我一直在阅读很多关于这个主题的内容,但我是Symfony2的新手,我不知道什么是解决它的最佳和最简单的方法.

先感谢您!

PS:如果您对任何事情有任何疑问或疑问,我将很乐意尽可能地解释.

roles symfony doctrine-orm hwioauthbundle

6
推荐指数
1
解决办法
1万
查看次数