我已经生成了一个实体的CRUD,获得了以下默认操作:
所以,我已经看到我只能删除使用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) 注意:问题在本文末尾,但我将详细解释所有上下文以便更好地理解.
我正在开发一个由3个模块组成的Symfony2应用程序:
- 学生模块 - >需要角色ROLE_STUDENT
- 教师模块 - >需要角色ROLE_TEACHER
- 管理员模块 - >需要角色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之间更改用户的角色.
我如何通过OAuth(HWIOAuthBundle)以默认角色(ROLE_STUDENT,如上所述)通过OAuth(HWIOAuthBundle)进行身份验证?
如果数据库中存在具有关联角色的昵称(ROLE_STUDENT或ROLE_TEACHER),我如何通过OAuth(HWIOAuthBundle)验证用户,但使用从数据库加载的角色?
我一直在阅读很多关于这个主题的内容,但我是Symfony2的新手,我不知道什么是解决它的最佳和最简单的方法.
先感谢您!
PS:如果您对任何事情有任何疑问或疑问,我将很乐意尽可能地解释.