我根据文档安装了SonataUserBundle,一切正常.除了我不能添加自定义验证规则.
我的理解是新规则应该添加到新的验证组,然后更新config.yml以告诉SonataUserBundle(或FosUserBundle)将新规则添加到验证序列.
我已经以各种方式尝试了这一点,但新规则似乎根本没有被接受......
这是我正在使用的配置......
(为了这个例子,我只是尝试将NotNull约束添加到一个新的foo字段.实际上我希望看到这么多工作,然后添加更多的验证规则.)
我已经添加了foo字段,Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml并且一切正常,将foo字段添加到User.php类中.
# in Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml
...
<field name="foo" type="string" length="100" nullable="true" />
...
Run Code Online (Sandbox Code Playgroud)
在User.php中,我们有getter和setter的属性:
// In Application\Sonata\UserBundle\Entity\User.php
// ...
/**
* @var string
*/
private $foo;
/**
* Set foo
*
* @param string $foo
* @return User
*/
public function setFoo($foo)
{
$this->foo = $foo;
return $this;
}
/**
* Get foo
*
* @return string
*/
public function getFoo()
{
return $this->foo;
}
// ...
Run Code Online (Sandbox Code Playgroud)
然后我将新的验证规则添加到我项目的现有validation.yml文件中:
Application\Sonata\UserBundle\Entity\User:
properties:
foo:
- …Run Code Online (Sandbox Code Playgroud) validation symfony fosuserbundle sonata-admin sonata-user-bundle
我正在尝试使用SonataUserBundle设置Symfony.用户注册和登录工作正常.当我尝试调用/profile视图时,我收到以下错误:
Attempted to call method "setCurrentUri" on class "Knp\Menu\MenuItem" in F:\<my project path>\vendor\sonata-project\user-bundle\Block\ProfileMenuBlockService.php line 91. Did you mean to call: "setCurrent"?
Run Code Online (Sandbox Code Playgroud)
错误发生前"事件列表"中的最后一个通知
INFO - [cms::renderBlock] block.id=53, block.type=sonata.user.block.menu
Run Code Online (Sandbox Code Playgroud)
有没有人之前遇到此错误,可以提供有关如何解决它的信息?
TIA Matt
我在Symfony 3中使用了SonataAdminBundle.因为我使用Symfony 3,我仍然无法使用SonataUserBundle.所以我只使用带有FOSUserBundle的SonataAdminBundle.
现在我试图实现的是隐藏每个角色的特定路线.例如,我只有三个角色;
超级管理员拥有管理员拥有的所有角色,管理员拥有所有第三个角色,第三个显然拥有ROLE_USER.超级管理员应该能够创建新用户并为他分配角色.超级管理员还应该能够更改用户的密码.用户应该能够更改自己帐户的密码.最后,超级管理员不应该更改自己的角色和创建新用户的其他角色.
如何在不使用SonataUserBundle的情况下实现此目的.为了删除路线部分我试过这样的事情:
protected function configureRoutes(RouteCollection $collection)
{
$securityContext = $this->getConfigurationPool()->getContainer()->get('security.authorization_checker');
if (!$securityContext->isGranted('ROLE_SUPER_ADMIN')) {
$collection->remove('create');
$collection->remove('edit');
}
}
Run Code Online (Sandbox Code Playgroud)
但我想有更好的解决方案.我完全了解有关安全性的官方文档,但我对此感到困惑,这是否意味着我必须对我security.yml文件中所有不同管理员的每个角色进行硬编码?没有SonataUserBundle,这甚至可以工作吗?我不想为ACL添加额外的数据库表.
有人可以帮助和/或提供一个很好的例子吗?我会非常感激的.
我在dev-master上使用Symfony 3.0.6,Sontata Admin Bundle 3.0.0和Doctrine ORM Admin Bundle.即使使用dev-master,用户包也不起作用.是否有针对Symfony 3.x的解决方案?
Your requirements could not be resolved to an installable set of
packages.
Problem 1
- Conclusion: remove symfony/symfony v3.0.6
- Conclusion: don't install symfony/symfony v3.0.6
- Conclusion: don't install symfony/symfony v3.0.5
- Conclusion: don't install symfony/symfony v3.0.4
- Conclusion: don't install symfony/symfony v3.0.3
- Installation request for sonata-project/user-bundle dev-master ->
satisfiable by sonata-project/user-bundle[dev-master].
- Conclusion: don't install symfony/symfony v3.0.2
- Conclusion: don't install symfony/symfony v3.0.1
- sonata-project/user-bundle dev-master requires symfony/form ^2.3 …Run Code Online (Sandbox Code Playgroud) 我是Symfony2的新手,为了满足我公司的需求,我正在使用Sonata Admin和User捆绑包.
我想知道是否可以根据已登录用户的角色隐藏或显示仪表板上的项目.
例如,我有几个由Sonata AdminBundle(用户,公司,任务,站点等管理)管理的实体,我想将用户管理仅显示给超级管理员,公司和站点管理到另一个角色(例如SITE_ADMIN)和第三个角色的任务.
你有没有遇到过这种情况?你能给我一个直接解决方案的解决方案或线索吗?
非常感谢,
埃内斯
我有一个例外:
An exception has been thrown during the rendering of a template ("The block type
sonata.user.block.menu does not exist") in SonataUserBundle:Profile:action.html.twig at
line 27.
Run Code Online (Sandbox Code Playgroud)
我已经安装了一个FOSUserBundle + SonataAdminBundle,我的理解,我需要tu安装SonataBlockBundle和其他必需的捆绑包.
我的内核文件:
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Symfony\Bundle\AsseticBundle\AsseticBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new Ibw\JobeetBundle\IbwJobeetBundle(),
new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(),
new Sonata\CoreBundle\SonataCoreBundle(),
new FM\BbcodeBundle\FMBbcodeBundle(),
new FOS\UserBundle\FOSUserBundle(),
new Sonata\jQueryBundle\SonatajQueryBundle(),
new Sonata\AdminBundle\SonataAdminBundle(),
new Sonata\BlockBundle\SonataBlockBundle(),
new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
new Knp\Bundle\MenuBundle\KnpMenuBundle(),
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
Run Code Online (Sandbox Code Playgroud)
Adn my composer.json
"php": ">=5.3.3",
"symfony/symfony": "~2.4",
"doctrine/orm": "~2.2,>=2.2.3",
"doctrine/doctrine-bundle": …Run Code Online (Sandbox Code Playgroud) symfony fosuserbundle composer-php sonata-admin sonata-user-bundle
我真的很紧张,因为缺少足够的资源来安装SonataDoctrineMongoDBAdminBundle以及它的依赖项如sonataUserBundle.我一直试图安装这个捆绑包15天.我做了各种各样的agaian,并再次在奏鸣曲的官方页面中讲述了什么.但它不能正常工作.在将sonataUserBundle扩展为ApplicationUserBundle之后,我的最终文档是:
user.php的
<?php
/**
* This file is part of the <name> project.
*
* (c) <yourname> <youremail>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Application\Sonata\UserBundle\Document;
use Sonata\UserBundle\Document\BaseUser as BaseUser;
/**
* This file has been generated by the EasyExtends bundle ( http://sonata-project.org/bundles/easy-extends )
*
* References :
* working with object : http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/working-with-objects.html
*
* @author <yourname> <youremail>
*/
class User extends …Run Code Online (Sandbox Code Playgroud) symfony fosuserbundle symfony-sonata sonata-admin sonata-user-bundle
我有一个奇怪的问题.我安装并配置了SonataUserBundle以与FosUserBundle和SonataAdminBundle一起使用.安装没有任何问题,一切似乎都完美,除非我通过sonataUserBundle网页创建另一个用户.一旦我创建了用户(并且在我查看数据库时创建了它),我就再也看不到用户列表了.当我单击以返回到用户列表时,我收到以下错误:
An exception has been thrown during the rendering of a template ("Unable to generate a URL for the named route "page_slug" as such route does not exist.") in "SonataAdminBundle:CRUD:list.html.twig".
Run Code Online (Sandbox Code Playgroud)
如果我从数据库中删除用户,只有一个用户,那么我可以访问用户列表.
我完全不知道如何进一步解决这个问题......
编辑1:
我发现,感谢MarkoJurinčič,我的配置中有这些行
sonata_user:
impersonating:
route: page_slug
parameters: { path: / }
Run Code Online (Sandbox Code Playgroud)
但是,这看起来并不像路由,实际上没有名为page_slug的路由.它应该有路由名称"page_slug"吗?
我已经安装了SonataAdminBundle和SonataUserBundle,我试图覆盖一些树枝模板.除了user_block.html.twig之外,我已经成功完成了所有工作
这是我的proyect ../app/Resources/目录结构:
Resources/
??? ApplicationSonataUserBundle
? ??? views
? ??? Admin
? ? ??? Core
? ? ??? user_block.html.twig <--- it doesn't work
? ??? layout.html.twig
? ??? Profile
? ? ??? action.html.twig
? ? ??? edit_authentication.html.twig
? ? ??? edit_profile.html.twig
? ? ??? show.html.twig
? ??? Security
? ??? login.html.twig
??? SonataAdminBundle
? ??? views
? ??? standard_layout.html.twig
??? TwigBundle
??? views
??? Exception
??? error.html.twig
Run Code Online (Sandbox Code Playgroud)
此外,我已经尝试将它放在SonataAdminBundle或SonataUserBundle目录下,但没有,它对我不起作用.
如何覆盖user_block模板?
谢谢
假设我有一个汽车实体。除了典型的 Car 属性之外,我还使用了 updateBy 属性
在奏鸣曲中,我使用 AppBundle\Admin\CarAdmin.php 创建了一个 CRUD 管理页面
在 CarAdmin 类中,我有必要的方法,如 configureListFields、configureFormFields 等...
我猜我需要使用方法 prePersist($object) 添加 updatedBy 但我面临 $this->getUser() 不可用
问题是,如何让登录用户填充 updateBy 属性?