我在安装FOS用户包时遇到问题.我试图到处搜索它,但可能我太笨了,找不到它.
我创建了一个名为Admin的实体,并试图运行doctrine:schema:update --force我遇到了一个错误: The child node "from_email" at path "fos_user" must be configured.
这是我的config.yml fos部分.
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\Admin
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我正在浏览FOSUserBundle.
我想说明Model/User.php
和之间有什么区别Entity/User.php
.
模型和实体不能相同吗?
查看我的prod日志后,我提到了一些错误:
[2012-08-31 15:56:43] request.CRITICAL: Doctrine\DBAL\DBALException:
An exception occurred while executing 'SELECT t0.username ....... FROM fos_user t0 WHERE t0.username = ?'
with params {"1":"Nrv\u29e7Kasi"}:
SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT)
and (utf8_general_ci,COERCIBLE) for operation '='
Run Code Online (Sandbox Code Playgroud)
Alghout我在学说cfg下有UTF-8默认值:
doctrine:
dbal:
charset: UTF8
Run Code Online (Sandbox Code Playgroud)
好像我的所有MySQL表都在latin1_swedish_ci
,所以我的问题是:
我是否可以手动更改utf8_general_ci
所有表格的校对而无需任何复杂/预防措施?
我正在创建一个用户创建表单,我想在创建用户时为用户提供一个或多个角色.
如何获取定义的角色列表security.yml
?
这是我目前的表单构建器:
public function buildForm(FormBuilder $builder, array $options)
{
parent::buildForm($builder, $options);
// add your custom fields
$user = new User();
$builder->add('regionUser');
$builder->add('roles' ,'choice' ,array('choices' => $user->getRolesNames(),
'required' => true,
));
}
Run Code Online (Sandbox Code Playgroud)
并在User.php中
public function getRolesNames(){
return array(
"ADMIN" => "Administrateur",
"ANIMATOR" => "Animateur",
"USER" => "Utilisateur",
);
}
Run Code Online (Sandbox Code Playgroud)
当然,此解决方案不起作用,因为roles
在数据库中定义为位图,因此choices
无法创建列表.
提前致谢.
我正在使用Symfony2,Doctrine,FOSRestBundle和JMSSerializer构建REST API.
我遇到的问题是在序列化我的实体时,序列化程序会引入任何相关实体.例如,对于作为董事会一部分的故事的一部分的任务,所以在序列化任务时,我得到的输出包括包含董事会的故事,其中包括董事会上的所有其他故事.
有没有一种简单的方法来限制它,只是包含foreignIds?
我提交连接表单时出现此错误(我使用FOSUserBundle最新版本):
No encoder has been configured for account "MyApp\UtilisateurBundle\Entity\Utilisateur
Run Code Online (Sandbox Code Playgroud)
这是我的实体:
<?php
namespace MyApp\UtilisateurBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Utilisateur extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\generatedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的app/config/security.yml:
imports:
- { resource: "@MyAppFilmothequeBundle/Resources/config/security.yml" }
Run Code Online (Sandbox Code Playgroud)
这是我的src/MyApp/FilmothequeBundle/Ressources/config/security.yml:
security:
providers:
fos_userbundle:
id: fos_user.user_manager
firewalls:
main:
pattern: .* …
Run Code Online (Sandbox Code Playgroud) 我正在使用Symfony2.0和FOSUserBundle,并希望在我的登录表单上禁用csrf令牌.
我已经在我的config.yml网站上全局禁用了csrf保护:
framework:
csrf_protection:
enabled: false
Run Code Online (Sandbox Code Playgroud)
这很好用,我的表单中没有添加csrf字段.但是,这不适用于登录表单.仅在此表单上,如果我在表单中不包含令牌,则会收到"无效的CSRF令牌"错误:
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
Run Code Online (Sandbox Code Playgroud)
如何在登录表单上禁用CSRF令牌?
在我的项目中,我只允许一个用户管理网站的内容.首先使用命令行添加此用户.
现在,我想让登记行动无法进入,我不知道怎么办?直到现在,我只是将ROLE_ADMIN放在路径寄存器的访问控制中,以避免访问者抛出它.
有小费吗?
在用户使用FOSUserBundle的密码重置重置密码后,默认情况下,他被重定向到FOSUserProfile.我想重定向到另一条路线.这是可能的,如果可以,怎么样?
例如,我向控制器中当前经过身份验证的用户授予新角色,如下所示:
$em = $this->getDoctrine()->getManager();
$loggedInUser = $this->get('security.context')->getToken()->getUser();
$loggedInUser->addRole('ROLE_XYZ');
$em->persist($loggedInUser);
$em->flush();
Run Code Online (Sandbox Code Playgroud)
在下一页加载时,当我再次获取经过身份验证的用户时:
$loggedInUser = $this->get('security.context')->getToken()->getUser();
Run Code Online (Sandbox Code Playgroud)
他们没有被授予这个角色.我猜这是因为用户存储在会话中需要刷新.
我该怎么做呢?
如果有所作为,我正在使用FOSUserBundle.
fosuserbundle ×10
symfony ×9
php ×5
symfony-2.1 ×2
collation ×1
csrf ×1
doctrine-orm ×1
encoder ×1
login ×1
mysql ×1
submit ×1
symfony-2.0 ×1
url-routing ×1