我有一个使用迄今为止伟大的字段类型的表单定义entity
.使用选项query_builder
我选择我的值并显示.
可悲的是,我需要显示一个null
默认值,比如all
(它是一个过滤器形式).我不喜欢choices
选项,entity
因为我有数据库值,FormType
不应该查询数据库.
到目前为止,我的方法是实现一个自定义字段类型,它扩展entity
并在列表顶部添加一个空条目.加载并使用字段类型,但遗憾的是不显示虚拟值.
字段定义:
$builder->add('machine', 'first_null_entity', [
'label' => 'label.machine',
'class' => Machine::ident(),
'query_builder' => function (EntityRepository $repo)
{
return $repo->createQueryBuilder('m')
->where('m.mandator = :mandator')
->setParameter('mandator', $this->mandator)
->orderBy('m.name', 'ASC');
}
]);
Run Code Online (Sandbox Code Playgroud)
表单类型定义:
class FirstNullEntityType extends AbstractType
{
/**
* @var unknown
*/
private $doctrine;
public function __construct(ContainerInterface $container)
{
$this->doctrine = $container->get('doctrine');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setRequired('query_builder');
$resolver->setRequired('class');
}
public function buildView(FormView $view, …
Run Code Online (Sandbox Code Playgroud) 我想跟踪对Doctrine Entity字段的更改.我使用Symfony 2.5.0和Doctrine 2.2.3.
到目前为止,我有一个EventSubscriber
订阅preUpdate
.在这里,我想创建一个新的Entity,它存储新旧值并保存对更新的Entity的引用.
问题是,我无法找到坚持这个新实体的方法.如果我persist()
在preUpdate
和flush()
中postUpdate
,如果我只能改变一个实体的作品.如果更改了多个实体,则会收到更改集为空的错误.
我试着摆弄不同的事件,结果不同.空白页面,跟踪entites不会持久化等.
我认为这应该是一个常见的用例 - 但我找不到例子.
当我在 Doctrine 中执行这样的事情时:
$qb = $doctrine
->getRepository('EntityA')
->createQueryBuilder('a')
->addSelect('b')
->join('EntityB', 'b', 'WITH', 'a.b = b')
->getQuery()
->getResult()
Run Code Online (Sandbox Code Playgroud)
我得到一个看起来像这样的数组:
array(0 => EntityA,
1 => EntityB,
2 => EntityA,
4 => EntityB)
Run Code Online (Sandbox Code Playgroud)
事实上,我得到了 2 个结果行,但是一个大小为 4 的数组。这使得迭代它以在模板中显示几乎是不可能的。
我想要这样的结果:
array(0 => array(EntityA, EntityB),
1 => array(EntityA, EntityB))
Run Code Online (Sandbox Code Playgroud)
当然,我可以在EntityA
该引用上创建映射EntityB
。但即使有改变的装载行为的可能性LAZY
,EAGER
等等,也可能是希望具有动态创建这种关系的可能性。
例如:
在包含大量实体的概览中,EAGER
需要加载以防止过多的查询。但是当我只想显示一个实体并且不需要额外的数据时,延迟加载更可取。
在drupal 8中,我遇到了需要由Composer安装库的模块。但是,我想知道是否可以跳过作曲家部分,而只需手动安装库。
我能做到吗?
(我从来没有让作曲家上班)
我在Symfony 3和symphony 2.8中都尝试过使用AsseticBundle CSS和样式表,但我一直在收到错误...
意外的"stylesheets"标记(期望第8行附近定义的"block"标记的结束标记)在第8行的:: base.html.twig中.500内部服务器错误 - Twig_Error_Syntax
这就是我想要解决的问题---
{% block stylesheets %}
{% stylesheets 'bundles/admin/css/*' filter='cssrewrite' %}
<link rel="stylesheet" href="{{ asset_url }}" />
{% endstylesheets %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
我已经搜索了解决方案,并且发现它已从新版本中删除,因此如果从新版本中删除它,我该如何处理我的样式表?
我在这里遇到了一个有趣的问题:
有一个桌子上有一些细胞,其中一些有排骨:
+----+----+----+----+
| | | c4 | cx |
| | c2 +----+----+
| | | c5 | cx |
| c1 +----+----+----+
| | | c6 | cx |
| | c3 +----+----+
| | | c7 | cx |
+----+----+---------+
Run Code Online (Sandbox Code Playgroud)
使用以下CSS我想只有单元格c4,c5,c6,c7以及行悬停时突出显示的相应cx单元格:
tr:hover td:not([rowspan]) {
background: #F1F1F1;
}
Run Code Online (Sandbox Code Playgroud)
当c4 .. c7悬停时,它就像一个魅力 - 只有细胞本身及其相应的cx细胞才能获得新的背景颜色.
当c1到c3悬停时,行c4也会悬停 - 记住选择器时非常有意义.问题是我不希望它以这种方式表现,也不知道如何阻止它.
有任何想法吗?如果需要,我会提供一个小提琴.
symfony ×4
doctrine-orm ×3
php ×3
css ×2
assetic ×1
composer-php ×1
drupal-8 ×1
hover ×1
html ×1
html-table ×1