我有一个商家实体,其中包含以下字段和关联: -
/**
* @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将类别刷新为仅属于此标记的类别以及更多操作.
我怎样才能做到这一点?
谢谢!
我在创建课程时遇到了问题.这是我正在尝试创建表单的数据库方案的一部分:
我正在尝试做的是创建一个课程,我可以创建会话和日期(时刻)附加到该会话.它应该看起来像这样:
在我的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) 我需要从config.yml解析一些配置参数,例如启用的语言.但是当我尝试使用普通的symfony方法时:$this->container->get('my_params');它失败了,因为我的管理类扩展了Sonata\AdminBundle\Admin\Admin类而不扩展Symfony\Component\DependencyInjection\ContainerAware类.
请问,如何在奏鸣曲Admin类中获取容器?
现在我通过重写奏鸣曲管理类来解决这个问题,使其扩展ContainerAware.
我有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.这该怎么做?
如何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
如何在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属性在字段内设置默认值???
我正在使用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) 我想在实体持久化和更新上添加新的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是多对多的关系表,对于我们想要坚持的实体.在前端应用程序一切正常,但在索纳塔管理员我遇到了这个问题:(
可能应该标题为:"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) 首先,我不确定这是Sonata问题还是Symfony2问题,这是我第一次使用Sf2表单来编辑关系.
这是问题所在:
我有两个课程,让我们称之为旧的最爱:Car和Wheel.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-sonata ×10
symfony ×9
sonata-admin ×7
php ×2
symfony-2.1 ×2
ajax ×1
datepicker ×1
doctrine-orm ×1
file-upload ×1
nested ×1
symfony-2.3 ×1