如何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
我是symfony2和SonataAdminBundle的新手.
我已经向SonataAdminBundle仪表板添加了3个实体,它们显示成功.
实体显示默认链接 - "添加新"和"列表"按钮.
我希望能够做到以下几点
我找不到上述任何一种方法,一直在寻找几个小时,任何帮助都将受到高度赞赏.
谢谢.
我试图将SonataMediaBundle与另一个实体联系起来:与ManyToMany有关系的产品.
架构和关系很好地创建.
但是,当我编辑或创建新产品时,我尝试添加一个按钮,我可以通过媒体库搜索媒体文件,然后使用按钮上传新文件.
对于OneToMany的关系,可以Admin\ProductAdmin::configureFormFields通过添加以下内容轻松完成:
->add('image', 'sonata_type_model_list', array(
'required' => false
), array(
'link_parameters' => array(
'context' => 'default',
'provider' => 'sonata.media.provider.image'
)
))
Run Code Online (Sandbox Code Playgroud)
因此,我获得了与SonataMediaBundle图库中已使用的相同的3个图标(从库中添加,上传和删除)
但关于ManyToMany的关系是不可能的!因为每次我选择媒体时,都会取代之前的媒体.所以我无法选择多种媒体类型.
我想和The Gallery一样使用(galleryHasMedia)
->add('galleryHasMedias', 'sonata_type_collection', array(
'by_reference' => false
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => array('context' => $context)
))
Run Code Online (Sandbox Code Playgroud)
但是,它真的很复杂.如何通过ManyToMany关系在另一个实体上选择或上传多个媒体文件?
我想为Sonata Admin Bundle中的创建和编辑操作创建不同的字段配置.
有什么方法来确定它除了检查$this->getSubject()->getId()的Sonata\AdminBundle\Admin\Admin::configureFormFields()?
可能应该标题为:"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) 我需要安装SonataUserBundle才能安装SonataNewsBundle.
我一步一步地遵循安装教程,但是我收到了这个错误:
./app/console sonata:easy-extends:generate SonataUserBundle
[InvalidArgumentException]
Bundle "ApplicationSonataUserBundle" does not exist or it is not enabled.
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) 是否有一种简单的方法来禁用给定管理类的某些CRUD操作?例如,我只想要一个通过前端添加的用户列表,而无需手动添加它们.
我已经开始使用sonata管理包了.它非常方便,易于设置和使用,但我似乎无法修复默认标签的翻译
例如link_add,link_list来了,而不是正确的英文标签.
#SonataAdmin
sonata_block:
default_contexts: [cms]
blocks:
sonata.admin.block.admin_list:
contexts: [admin]
sonata.block.service.text:
sonata.block.service.rss:
sonata_admin:
title: Sonata Project
title_logo: /bundles/sonataadmin/logo_title.png
templates:
# default global templates
layout: SonataAdminBundle::standard_layout.html.twig
ajax: SonataAdminBundle::ajax_layout.html.twig
# default actions templates, should extend a global templates
list: SonataAdminBundle:CRUD:list.html.twig
show: SonataAdminBundle:CRUD:show.html.twig
edit: SonataAdminBundle:CRUD:edit.html.twig
dashboard:
blocks:
# display a dashboard block
- { position: left, type: sonata.admin.block.admin_list }
Run Code Online (Sandbox Code Playgroud)
这是我的配置文件,这些是文档提供的基本默认设置.我在这里缺少什么来为默认视图参数启用标签?任何人都可以帮忙
我有一个Vehicle类型的元素列表,我用Sonata Admin显示这些元素.我允许通过"状态"字段过滤这些元素,但是我想要,当显示列表时,只显示活动车辆,如果有人想看到不活动的车辆,则使用过滤器并选择非活动状态.我想知道是否有人知道如何使用Sonata Admin默认为过滤元素列表应用过滤器.
这是我的代码:
public function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
->add('status')
;
}
protected function configureDatagridFilters(DatagridMapper $mapper)
{
$mapper
->add('name')
->add('status')
;
}
Run Code Online (Sandbox Code Playgroud)
是否有任何选项可以添加到configureDatagridFilters()中的状态字段以实现此目标?其他选择?
提前致谢.