标签: symfony-sonata

如何在Sonata Admin表单中使用Ajax?

我有一个商家实体,其中包含以下字段和关联: -

/**
 * @ORM\ManyToMany(targetEntity="Category", inversedBy="merchants")
 */
public $categories;

/**
 * @ORM\ManyToMany(targetEntity="Tag", inversedBy="merchants")
 */
public $tags;

/**
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="merchants")
 */
protected $primaryCategory;

/**
 * @ORM\ManyToOne(targetEntity="Tag", inversedBy="merchants")
 */
protected $primaryTag;
Run Code Online (Sandbox Code Playgroud)

标签和类别也有ManyToMany映射.所以我们有Tag_Category,Merchant_Tag,Merchant_Category映射表.

现在我想在这些字段上执行一些ajax.

我想让用户先选择主标签.在主标记的基础上,ajax将类别刷新为仅属于此标记的类别以及更多操作.

我怎样才能做到这一点?

谢谢!

ajax symfony symfony-sonata sonata-admin

29
推荐指数
1
解决办法
2万
查看次数

Sonata Admin(2.3)中的嵌套集合字段

我在创建课程时遇到了问题.这是我正在尝试创建表单的数据库方案的一部分:

在此输入图像描述

我正在尝试做的是创建一个课程,我可以创建会话和日期(时刻)附加到该会话.它应该看起来像这样:

在此输入图像描述

在我的CourseAdmin课程中,我有:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name',                   'text',         array('label' => 'Naam'))
        ->add('description',            'textarea',     array('label' => 'Beschrijving'))
        ->add('materials',              'textarea',     array('label' => 'Benodigde materialen'))
        ->add('numberOfParticipants',   'number',       array('label' => 'Aantal deelnembers'))
        ->add('numberOfDays',           'number',       array('label' => 'Aantal dagen'))
        ->add('price',                  'number',       array('label' => 'Prijs'))
        ->add('priceKmo',               'number',       array('label' => 'KMO-portefeuille Prijs'))

        ->add('location', 'sonata_type_model', array('expanded' => true, 'by_reference' => false, 'multiple' => true, 'btn_add' => false))

        ->add('session', 'sonata_type_collection', array(
            'by_reference' => false,
            'type_options' => array(
                // Prevents the "Delete" option from being …
Run Code Online (Sandbox Code Playgroud)

php nested symfony symfony-sonata sonata-admin

24
推荐指数
1
解决办法
2509
查看次数

如何在奏鸣曲Admin类中获取容器实例?

我需要从config.yml解析一些配置参数,例如启用的语言.但是当我尝试使用普通的symfony方法时:$this->container->get('my_params');它失败了,因为我的管理类扩展了Sonata\AdminBundle\Admin\Admin类而不扩展Symfony\Component\DependencyInjection\ContainerAware类.

请问,如何在奏鸣曲Admin类中获取容器?

现在我通过重写奏鸣曲管理类来解决这个问题,使其扩展ContainerAware.

symfony symfony-sonata symfony-2.1 sonata-admin

22
推荐指数
2
解决办法
2万
查看次数

Sonataadminbundle:同一实体的多个管理部分

我有Page列的实体类type=integer.当我做:

   <service id="sonata.admin.pages" class="Main\ProgramBundle\Admin\PageAdmin">
      <tag name="sonata.admin" manager_type="orm" group="dashboard" label="Pages"/>
      <argument />
      <argument>Main\ProgramBundle\Entity\Page</argument>
      <argument>SonataAdminBundle:CRUD</argument>
  </service>


   <service id="sonata.admin.groups" class="Main\ProgramBundle\Admin\GroupAdmin">
      <tag name="sonata.admin" manager_type="orm" group="stories" label="Groups"/>
      <argument />
      <argument>Main\ProgramBundle\Entity\Page</argument>
      <argument>SonataAdminBundle:CRUD</argument>
  </service>
Run Code Online (Sandbox Code Playgroud)

简而言之,两个部分都在同一实体上工作,除了每个部分都有不同的查询和表单.

但是,即使我选择了PageAdmin,奏鸣曲总是会执行Admin/GroupAdmin.这该怎么做?

symfony symfony-sonata sonata-admin

22
推荐指数
2
解决办法
8569
查看次数

Sonata Admin Bundle:DatePicker范围

如何doctrine_orm_datetime_range在使用jQuery UI datepicker的Sonata Admin Bundle中创建过滤器?

我尝试了以下,但它不起作用:

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
    $datagridMapper
        ->add('datumUitgevoerd', 'doctrine_orm_datetime', array('widget' => 'single_text'), null, array('required' => false,  'attr' => array('class' => 'datepicker')))
    ;
}
Run Code Online (Sandbox Code Playgroud)

datepicker jquery-ui-datepicker symfony-sonata symfony-2.1 sonata-admin

22
推荐指数
3
解决办法
2万
查看次数

在symfony2 sonata admin bundle中设置默认值

如何在sonata admin bundle中设置默认值,configureFormFields方法中缺少data选项

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name', null, array('required' => true, 'data' => "my default value"))
    ;
}
Run Code Online (Sandbox Code Playgroud)

如何使用data属性在字段内设置默认值???

symfony symfony-sonata

19
推荐指数
3
解决办法
2万
查看次数

如何在SonataAdminBundle的上传字段上方显示当前图片?

我正在使用SonataAdminBundle(使用Doctrine2 ORM),并且我已成功为我的Picture模型添加了文件上传功能.

我想在" 显示"和" 编辑"页面上,<img src="{{ picture.url }} alt="{{ picture.title }} />在相关表单字段上方显示一个简单标记(假设正在编辑的图片当然不是新的),以便用户可以看到当前照片,并决定是否改变与否.

经过几个小时的研究,我一直无法弄清楚如何去做.我想我需要覆盖一些模板,但我有点迷失...有人可以给我一个提示吗?

谢谢!

这是我的PictureAdmin类的相关部分.

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('category', NULL, ['label' => 'Catégorie'])
        ->add('title', NULL, ['label' => 'Titre'])
        ->add('file', 'file', ['required' => false, 'label' => 'Fichier']) // Add picture near this field
        ->add('creation_date', NULL, ['label' => 'Date d\'ajout'])
        ->add('visible', NULL, ['required' => false, 'label' => 'Visible'])
        ->add('position', NULL, ['label' => 'Position']);
}

protected function configureShowFields(ShowMapper $showMapper)
{
    $showMapper
        ->add('id', NULL, ['label' …
Run Code Online (Sandbox Code Playgroud)

php file-upload symfony symfony-sonata

19
推荐指数
3
解决办法
2万
查看次数

在postPersist事件中插入主义

我想在实体持久化和更新上添加新的Feed项.我写这个事件监听器(postUpdate是一样的):

public function postPersist(LifecycleEventArgs $args)
{
    $entity = $args->getEntity();
    $em = $args->getEntityManager();

    if ($entity instanceof FeedItemInterface) {
        $feed = new FeedEntity();
        $feed->setTitle($entity->getFeedTitle());
        $feed->setEntity($entity->getFeedEntityId());
        $feed->setType($entity->getFeedType());
        if($entity->isFeedTranslatable()) {
            $feed->getEnTranslation()->setTitle($entity->getFeedTitle('en'));
        }
        $em->persist($feed);
        $em->flush();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了

完整性约束违规:1062重复条目'30 -2'用于键'PRIMARY'

在日志中有两个插入:

INSERT INTO interview_scientificdirection(interview_id,scientificdirection_id)VALUES(?,?)([30,2])INSERT INTO interview_scientificdirection(interview_id,scientificdirection_id)VALUES(?,?)([30,2])

scientificdirection是多对多的关系表,对于我们想要坚持的实体.在前端应用程序一切正常,但在索纳塔管理员我遇到了这个问题:(

symfony doctrine-orm symfony-sonata

16
推荐指数
2
解决办法
4万
查看次数

SonataMediaBundle - 如何上传图片?

可能应该标题为:"SonataMediaBundle - 哪里是失踪的howto?".

我已经使用sonataAdminBundle和sonataDoctrineORMAdminBundle(以及其他一些)制作了一些管理员后端,大部分工作都按预期工作,但我留下文件上传和处理以供日后使用,因为我认为"可能有多难?".

长话短说 - 是否有关于最简单的事情的任何文档 - 即将图像附加到帖子或条目,如何配置奏鸣曲管理类,如何以编辑形式显示图像拇指等?

文档的第一页以"您可以访问您的管理仪表板"结束,就像我可以期待那里的一些相关更改,可能是媒体经理启动和运行,或者其他什么.但这种情况并非如此.

下一页简要介绍了heplers,然后是另一个页面,其中包含相当复杂的vimeo提供程序案例研究.

我在网上搜索过,我最好能想出来,上传带有ajax弹出窗口的字段,以及上传文件列表.

在我的管理课程中,我有:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
    ->with('general')
        ->add('title')
        ->add('body')
        ->add('categories')
        ->end()
    ->with('media')
        ->add('images', 'sonata_type_model')
Run Code Online (Sandbox Code Playgroud)

在我的新闻课上:

/**
 * @ORM\ManyToMany(targetEntity="Application\Sonata\MediaBundle\Entity\Media")
 */
public $images; 
Run Code Online (Sandbox Code Playgroud)

并实施了所有的yaml配置和路由.

结果是:Fatal error: Call to a member function add() on a non-object in [some-entity].php当尝试上传图像时,可选择的图像id列表带有"加号"(我猜是sonata_type_model字段).

我被卡住了.我能够在一两个小时内以简单的sf2创建媒体"经理",但这是另一个项目,并且重写当前的模式意味着从头开始"开始".那么 - 为了使sonataMediaBundle与sonataAdminBundle一起按预期工作怎么办?


编辑:这是我做的事情:

我的新闻类(或任何其他需要图片上传的内容):

<?php

namespace Some\SiteBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;


/**
 * Some\SiteBundle\Entity\News
 *
 * @ORM\Table(name="news")
 */
class News
{
    /** …
Run Code Online (Sandbox Code Playgroud)

symfony symfony-sonata sonata-admin

16
推荐指数
1
解决办法
1万
查看次数

使用sonata_type_admin嵌入式管理员停止SonataAdmin/Symfony2创建空对象

首先,我不确定这是Sonata问题还是Symfony2问题,这是我第一次使用Sf2表单来编辑关系.

这是问题所在:

我有两个课程,让我们称之为旧的最爱:CarWheel.Car与Wheel有一个可选的一对一关系(举个例子,就这么说吧......).我已经设置了SonataAdmin,CarAdmin其中包含一个嵌入WheelAdmin使用的类,sonata_type_admin并尝试创建一个Car而不输入任何Wheel数据.

但是,在提交时(在$ form-> bind()/ $ form-> submit()的某个地方,我可以跟踪)Symfony和/或Sonata实例化一个Wheel并试图保持它(其所有值为null) .由于Wheel具有一些非null约束,因此抛出DBALException,抱怨您无法使用null值来插入Wheel.

这很顽皮,我想阻止它发生.如果我没有输入Wheel的任何细节,我不希望幻影轮对我的代码和数据库造成威胁.我期望的是,如果我没有输入任何数据,就没有任何内容可以插入/保留,所以它不会被单独留下.但这不是正在发生的事情...... 任何想法如何将其驯服成合情合理的东西?


这是长版本,包含代码块和所有内容:

ORM定义首先:

# MyNS\MyBundle\Resources\Config\Doctrine\Car.orm.yml
MyNS\MyBundle\Entity\Car:
  type: entity
  repositoryClass: MyNS\MyBundle\Entity\Repositories\CarRepository
  table: test_cars
  id:
    id:
      type:                     integer
      generator:                { strategy: AUTO }
  fields:
    color:
      type:                     string
      length:                   50
    owner:
      type:                     string
      length:                   50
      nullable:                 true
  oneToOne:
    leftFrontWheel:
      targetEntity:             Wheel
      cascade:                  [ persist ]
      joinColumn:
        name:                   leftFrontWheelId
        referencedColumnName:   id


# MyNS\MyBundle\Resources\Config\Doctrine\Wheel.orm.yml
MyNS\MyBundle\Entity\Wheel:
  type: entity
  repositoryClass: MyNS\MyBundle\Entity\Repositories\WheelRepository
  table: test_wheels …
Run Code Online (Sandbox Code Playgroud)

symfony symfony-sonata sonata-admin symfony-2.3

15
推荐指数
1
解决办法
3002
查看次数