我想在我的设置页面中集成FOSUserBundle的change_password表单,我还有change_email表单或其他信息.我知道如何在我的设计中集成FOS而不是如何做我正在尝试做的事情.
现在,表单是通过控制器和表单生成器方法生成的,我不知道如何修改它...
在此先感谢,Valentin
我正在尝试覆盖 FOSUserBundle 的重置控制器。我自己的 UserBundle 正在覆盖整个包,它对例如模板工作正常,但这是我第一次尝试覆盖控制器,似乎我做错了什么。
以这种方式尝试(仅在第一行中复制,因为控制器的其余部分仍然是默认的):
namespace UserBundle\Controller\User;
use FOS\UserBundle\Controller\ResettingController as BaseController;
...
class ResettingController extends BaseController{
...
Run Code Online (Sandbox Code Playgroud)
“重置密码”按钮位于我的登录页面上。
我想要实现的是checkEmailAction 的一些自定义。我想检查请求重置密码的人是否是“锁定”用户,并为每个请求发送正确的“响应消息”。控制器的其余部分可以保持不变。我添加了一些转储和一个“死”;进入代码检查是否有任何输出,但没有。
我最好从哪里开始寻找?根据文档https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html我不应该比我已经做的更多。
我正在尝试在 Symfony 中构建多租户支持,为此我group_id在我的用户中创建了一个列,最重要的是,所有实体也都有这个相同的列。这样用户只能访问其组的数据。
我已经成功地通过数据访问和显示解决了整个问题,但随后出现了EntityTypesSymfony Forms 的挑战。
问题基本上是,如何EntityType仅显示该特定组输入的数据。按group_id用户和联系人所拥有的进行排序。传递此信息以便用户只能访问其数据的最佳方法是什么?
<?php
namespace ContactBundle\Form;
use ContactBundle\Entity\Contact;
use ContactBundle\Entity\Organization;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
class ContactType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('first_name', TextType::Class, [
'attr' => ['class'=>'u-full-width'],
'label' => 'First Name',])
->add('last_name', TextType::Class, [
'attr' => ['class'=>'u-full-width'],
'label'=>'Last Name',
])
->add('email', TextType::Class, [
'attr' => ['class'=>'u-full-width'],
'label'=>'Email Address'
])
->add('organization_id', EntityType::Class, [ …Run Code Online (Sandbox Code Playgroud) 我有默认的FOSUserBundle注册表.我想在注册表单中添加"jabber"字段,这是可选的(不需要填写).
用户实体:
protected $jabber;
/**
* @ORM\Column(type="string", length="100")
*/
Run Code Online (Sandbox Code Playgroud)
但是当我尝试它时,我无法注册填充"jabber"字段.如何填补这个领域?
我想使用从FOSUserBundle继承的User类的get方法.但我有一个错误:
致命错误:在非对象上调用成员函数getNom().
我的用户类:
<?php
namespace Olr\LoanBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*
*/
protected $nom;
/**
* @ORM\Column(type="string", length=255)
*
*/
protected $prenom;
/**
* @ORM\Column(type="string", length=50)
*
*/
protected $adresse;
/**
* @ORM\Column(type="string", length=50)
*
*/
protected $adresse2;
/**
* @ORM\Column(type="string", length=5)
*
*/
protected $cp;
/**
* @ORM\Column(type="string", length=50)
* …Run Code Online (Sandbox Code Playgroud) 我正在使用FOSUserBundle来管理用户访问,在Symfony2中对网站进行编程。我有一个名为“站点”的实体,可以有许多用户。只有相关用户和管理员才有权访问Site:show操作。
我不知道是否可以security.yml在控制器中执行此操作,或者是否必须直接在控制器中或其他位置执行此操作。推荐的方法是什么?
谢谢。
我不能得到$ this-> generateUrl()工作,但它是从我的控制器工作,还是我应该用另一种方式定义'setAction'?
class UserLoginType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('POST')
->setAction($this->generateUrl('fos_user_security_check'))
->add('username', 'text')
->add('password', 'password')
->add('save', 'submit');
}
public function getName()
{
return 'user_login';
}
}
Run Code Online (Sandbox Code Playgroud) 我得到这个警告,似乎无法找到解决方案,我尝试了各种答案,但仍然没有
Warning: Missing argument 1 for FOS\UserBundle\Form\Type\RegistrationFormType::__construct(), called in C:\xampp\htdocs\symfony-bootstrap\src\sava\UserBundle\Controller\VerUsuarioController.php on line 77 and defined in C:\xampp\htdocs\symfony-bootstrap\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Form\Type\RegistrationFormType.php on line 25
Notice: Undefined variable: class in C:\xampp\htdocs\symfony-bootstrap\vendor\friendsofsymfony\user-bundle\FOS\UserBundle\Form\Type\RegistrationFormType.php on line 27
Run Code Online (Sandbox Code Playgroud)
我的services.yml
# src/Acme/UserBundle/Resources/config/services.yml
services:
sava_user.registration.form.type:
class: sava\UserBundle\Form\RegistroTypes
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: sava_user_registration }
Run Code Online (Sandbox Code Playgroud)
这是我的config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: "@savaUserBundle/Resources/config/services.yml" }
framework:
#esi: ~
translator: { fallback: %locale% }
secret: %secret%
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~ …Run Code Online (Sandbox Code Playgroud) 我有一个使用Doctrine> = 2.2.3,<2.4-dev的Symfony 2.3应用程序.我将生产服务器升级到PHP 5.6,导致FOSUserBundle出现以下错误:
Warning: Erroneous data format for unserializing 'air\cms2Bundle\Entity\User' in /vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php on line 833
Fatal error: __clone method called on non-object in /vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php on line 837
Run Code Online (Sandbox Code Playgroud)
该实体是FOSUserBundle BaseUser的只是一个扩展,如图所示这里.可以在此处找到FOSUserBundle BaseUser类.
在做了一些初步研究之后,我发现错误是由PHP 5.6和Doctrine 2兼容性问题引起的,因为PHP 5.6 中的Serializable发生了变化.Doctrine开发人员已经解决了这个问题(请参阅GitHub pull请求),但是我仍然不确定我需要哪个版本的Doctrine 2 composer.json才能获得修复,而且我也不确定Symfony 2的哪个版本呢兼容.
我目前composer.json:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.3.*",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.2.*",
...
},
Run Code Online (Sandbox Code Playgroud)
更新:
我已将我的composer.json更新为:
"require": {
"php": ">=5.6.0",
"symfony/symfony": "2.6.*",
"doctrine/orm": "~2.5",
"doctrine/doctrine-bundle": "1.2.*",
...
},
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这导致了一个不可恢复的依赖问题: …
我想在Symfony中使用Fos UserBundle.
我将其配置为Symfony Doc的"FOSUserBundle入门".
/ Login页面正在工作,但当我打开/ register页面时,我得到错误:
尝试从命名空间"AppBundle\Entity"加载类"User".您是否忘记了"使用"语句,例如"Symfony\Component\Security\Core\User\User","Symfony\Bridge\Doctrine\Tests\Fixtures\User"或"FOS\UserBundle\Model\User"?
500 Internal Server Error - ClassNotFoundException
Stack Trace
1. in vendor\friendsofsymfony\user-bundle\Model\UserManager.php at line 40
37. public function createUser()
38. {
39. $class = $this->getClass();
40. $user = new $class();
41.
42. return $user;
43. }
2. at UserManager ->createUser ()
Run Code Online (Sandbox Code Playgroud)
我已经清除了缓存:
php app/console cache:clear --env=prod --no-warmup
php app/console cache:clear --env=dev --no-warmup
Run Code Online (Sandbox Code Playgroud)
并使作曲家更新,但没有发生.
版本:
FOS /用户捆绑:v2.0.0
Symfony:v2.8.18
PHP:7.1.2
Twig:v2.3.0
这是我的用户级:
namespace AppBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* web_user …Run Code Online (Sandbox Code Playgroud) fosuserbundle ×10
symfony ×10
php ×6
forms ×2
builder ×1
controller ×1
doctrine-orm ×1
multi-tenant ×1
overriding ×1
php-5.6 ×1
routes ×1
security ×1