我想知道是否有可能使用实体构建一个表单以一对一的关系获取所有字段.澄清:
我有一个User.php实体(包含所有明显的字段,名称,姓氏,流派等)和一个Address.php实体.我想要的是构建整个表单,而不是逐个添加Address实体的属性,并在数据库中保存适当的关系.
这是我尝试过的(我已经尝试了一点代码),但显然不是正确的方法:
用户实体:
class User implements UserInterface {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, nullable=TRUE)
*/
protected $firstName;
/**
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank()
*/
protected $lastNames;
/**
* @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address")
*/
protected $address;
Run Code Online (Sandbox Code Playgroud)
地址类
class Address {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, unique=TRUE)
* @Assert\NotBlank()
*/
protected $streetName;
/**
* @ORM\Column(type="string", length=50)
*/
protected $streetNumber;
Run Code Online (Sandbox Code Playgroud)
表单构建器:
public function …Run Code Online (Sandbox Code Playgroud) 我需要获取国家/地区列表,按字母顺序排序.由于我将实体翻译成四种语言(英语,法语,西班牙语和中文),我使用了gedmo学说扩展来管理翻译.问题是当我在实体表单字段类型中获取此列表时:
$form = $builder->add('country', 'entity',
array('class' => 'GroupCommonBundle:Country',
'query_builder' => function(EntityRepository $er) {
$query = $er->createQueryBuilder('c')->orderBy('c.name');
}
Run Code Online (Sandbox Code Playgroud)
结果按原始实体定义(英语)而非当前语言环境(西班牙语或法语)排序,我真正需要的是什么.其实我用的$this->container->getParameter('locale')
我试图迫使查询钩,如解释在这里:
$query->getQuery()->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
Run Code Online (Sandbox Code Playgroud)
但是AFAIK,这只有在查询写成dql时才有效:
$query = $this->getDoctrine()->getManager()->createQuery('
SELECT c
FROM GroupCommonBundle:Country c
ORDER BY c.name ASC');
$query->setHint(\Gedmo\Translatable\TranslatableListener::HINT_TRANSLATABLE_LOCALE, $this->container->getParameter('locale'));
Run Code Online (Sandbox Code Playgroud)
实体表单不允许这样做,因为它正在等待queryBuilder对象.
所以,我需要翻译我的收藏并以他当前的语言排序.谁知道如何实现这一目标?
我正在寻找一个基本的解释,我怎么能用symfony2来做这个,因为网上没有关于这个的体面文档.我知道怎样才能用纯PHP进行这个过程,但我不知道从哪里开始使用symfony2.
伙计们,真的很感激任何帮助.
谢谢!
澄清我在寻找的内容:用户完成注册过程后,发送一封自动电子邮件,其中包含激活其帐户的链接
这个问题看起来有点愚蠢......但我想知道是否可以将内联 javascript 代码插入到另一个 javascript 代码中。让我们说清楚:
我试图放置一个 google plus 按钮,通过 jquery 附加它,如下所示:
jQuery('.gplus').append('<g:plusone annotation="inline"></g:plusone>');
Run Code Online (Sandbox Code Playgroud)
这个按钮需要外部js才能正常工作。我想做的是插入外部js来执行以下操作:
var gplusjs = '
<script type="text/javascript">
(function() {var po = document.createElement("script");
po.type = "text/javascript"; po.async = true;
po.src = "https://apis.google.com/js/plusone.js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(po, s);
})();
</script>';
jQuery('#js').append(gplusjs);
Run Code Online (Sandbox Code Playgroud)
其结果是将代码打印为 HTML,但不解释为脚本。这个有可能?我是个笨蛋吗?谢谢!
我已经找到了这个,并且有一些相关的问题,但没有人给我我需要的答案.我有一个带日期字段的实体,我需要选择那些超过7天的人:
$query = $repository->createQueryBuilder('rf')
->where('rf.sendDate >='.new \DateTime('-7 days'))
->getQuery();
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Catchable Fatal Error: Object of class DateTime could not be converted to string
Run Code Online (Sandbox Code Playgroud)
我想知道为什么它假定这rf.sendDate是一个字符串,何时被定义为实体中的DateTime对象?我怎么能比较这个?
任何解释真的很感激.
symfony ×4
doctrine-orm ×2
php ×2
append ×1
formbuilder ×1
inline-code ×1
javascript ×1
jquery ×1
mysql ×1
nested ×1