我尝试在SonataAdminBundle表单中设置当前经过身份验证的用户:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('title')
->add('content')
->add('slug')
//->add('user')
;
}
Run Code Online (Sandbox Code Playgroud)
由于我不希望用户选择/选择自己的用户,因此我想在用户发送表单(没有任何用户对象)的过程中设置用户名。(注意:我想以几种形式使用它,所以我需要一个通用的解决方案。)
我现在做的是在阅读以下内容后设置EventListener:http : //symfony.com/doc/current/cookbook/service_container/event_listener.html
class PostListener
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function prePersist(LifeCycleEventArgs $args)
{
$entity = $args->getEntity();
//Get user
$securityContext = $this->container->get('security.context');
$user = $securityContext->getToken()->getUser();
//Set authenticated user as autor
$entity->setUser($user);
}
}
Run Code Online (Sandbox Code Playgroud)
包括服务:
post.listener:
class: Backender\BlogBundle\Listener\PostListener
calls:
- [ setContainer, [ @service_container ] ]
tags:
- { name: doctrine.event_listener, event: prePersist }
Run Code Online (Sandbox Code Playgroud)
现在不确定这是否正确,因为我不想在要设置用户的地方指定表单。(这个人想在每个表格上设置用户吗?)
经过更多研究,似乎我必须使用这样的事件订阅服务器:http ://symfony.com/doc/2.0/cookbook/form/dynamic_form_generation.html在此示例中,他们使用FormEvents …
我正在使用4个entites:
翻译可以有多种语言.语言可以有很多翻译.可以为站点分配一对翻译/语言.
因此,即使内部没有"真实属性",我也被迫创建translator_language.
class Language {
/**
* @var \XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="language")
*/
private $translators;
Run Code Online (Sandbox Code Playgroud)
XX
class Translator {
/**
* @var XX\TranslateBundle\Entity\TranslatorLanguage
*
* @ORM\OneToMany(targetEntity="TranslatorLanguage", mappedBy="translator")
*/
private $languages;
Run Code Online (Sandbox Code Playgroud)
XX
class TranslatorLanguage
{
/**
* @var XX\TranslateBundle\Entity\Translator
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Translator", inversedBy="languages")
* @ORM\JoinColumn(name="translatorID", referencedColumnName="ID", nullable=false)
*/
private $translator;
/**
* @var XX\TranslateBundle\Entity\Language
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Language", inversedBy="translators")
* @ORM\JoinColumn(name="languageID", referencedColumnName="ID", nullable=false)
*/
private $language;
/**
* @var XX\TranslateBundle\Entity\TranslatorSite
*
* …Run Code Online (Sandbox Code Playgroud) 我目前正在研究一个带有doctrine2的symfony2.3项目,试图在Sonata后端实现个人翻译管理.
翻译基于doctrine2可翻译行为模型:https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/translatable.md ,更准确地说是个人翻译.
管理表单使用的是TranslatedFieldType.php的symfony2.3版本.
我的实体类如下:
<?php
namespace Hr\OnlineBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @Gedmo\TranslationEntity(class="Hr\OnlineBundle\Entity\CategoryTranslation")
*/
class Category
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue
*/
private $id;
/**
* @Gedmo\Translatable
* @ORM\Column(length=64)
*/
private $title;
/**
* @Gedmo\Translatable
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\OneToMany(
* targetEntity="CategoryTranslation",
* mappedBy="object",
* cascade={"persist", "remove"}
* )
*/
private $translations;
public function __construct()
{
$this->translations = …Run Code Online (Sandbox Code Playgroud) 我创建了一个带有existant数据的新应用程序.
我使用sonatadminbundle列出对象"Formule"的数据网格.在我的对象"Formule"中,我与对象"Contact"有关系.在我的列表中需要显示这种关系.但我知道过去有一些联系人被删除了.我想在我的行datagrid的模板中做这个:
{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field%}
{% if object.getContact.name is defined %}
{{ object.getContact.name }} //EntityWasNotFound
{% else %}
This contact was deleted in the past
{% endif %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
因此,此错误会在行中返回EntityWasNotFound异常或删除联系人.我不知道是否有联系人.我用"不是空","定义","空"......没什么好的:(
谢谢
我已经设置了sonatamediabundle
当我尝试上传 png 文件时,我可以正确上传 jpg 文件。
它显示错误。
An error has occurred during the creation of item "n/a".
Run Code Online (Sandbox Code Playgroud)
我的config.yml是这样的。我认为我正确设置了 png 文件配置。上传png还有其他检查点吗?
sonata_media:
# if you don't use default namespace configuration
#class:
# media: MyVendor\MediaBundle\Entity\Media
# gallery: MyVendor\MediaBundle\Entity\Gallery
# gallery_has_media: MyVendor\MediaBundle\Entity\GalleryHasMedia
default_context: default
db_driver: doctrine_orm # or doctrine_mongodb, doctrine_phpcr
contexts:
default: # the default context is mandatory
providers:
- sonata.media.provider.dailymotion
- sonata.media.provider.youtube
- sonata.media.provider.image
- sonata.media.provider.file
formats:
small: { width: 100 , quality: 70}
big: { width: 500 , quality: 70} …Run Code Online (Sandbox Code Playgroud) 我在Symfony 2.6应用程序中安装了Sonata Admin Bundle和User Bundle.我发现User bundle在中创建了一个bundle src/Application/Sonata/UserBundle.当我进入管理员用户创建页面(admin/sonata/user/user/create)时,我发现了很多字段:
管理
安全
我只需要用户名,电子邮件,密码,组,名字和姓氏来创建管理员用户.如何从该页面中删除其他不必要的字段?
我尝试安装Sonata User Bundle,但是执行命令时配置出现问题
app/console sonata:easy-extends:generate SonataUserBundle -d src
Run Code Online (Sandbox Code Playgroud)
git bash显示此错误:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
The service "sonata.user.orm.group_manager" has a dependency on a non-exist
ent parameter "fos_user.model.group.class". Did you mean this: "fos_user.mo
del.user.class"?
Run Code Online (Sandbox Code Playgroud) symfony doctrine-orm fosuserbundle sonata-admin sonata-user-bundle
sonata-admin ×7
symfony ×7
doctrine-orm ×2
behavior ×1
symfony-2.1 ×1
symfony-2.3 ×1
symfony-2.6 ×1
twig ×1