首先我从官方网站下载了Symfony2框架(标准版),安装完成后,整个Symfony项目共计约16MB.
之后,我想使用Composer和create-project命令启动另一个Symfony2项目.安装后,该应用程序有~130MB!
这两个项目之间存在巨大的差异.
我想在使用Composer时我下载了一些额外的软件包,但是大小超过100MB的差异似乎很大.
我检查了两个项目,他们有相同的目录结构(即我没有在更大的项目中找到一些额外的目录).
那么,当我使用Composer时,为什么会有这么大的差异以及我做错了什么呢?
我在实现Doctrine EventListener时遇到问题.创建新发票时,InvoiceType表单中包含一系列项目(标题,价格,金额).对于发票,在price现场,我想插入所有购买产品的总和.在ReportListener中,我得到了总和,但EventListener没有预先保存数据和代码只是停止而没有显示错误(程序$entityManager->persist($entity)在ReportListener中执行时停止)
这里是一些代码
控制器
class InvoiceController extends Controller
{
public function createAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository('DemoBundle:Company')
->findOneByUser($this->getUser()->getId());
$invoice = new Invoice();
$item = new Item();
$form = $this->createForm(new InvoiceType($company->getId()), $invoice);
if($request->isMethod('POST')){
if($form->isValid()){
$em->persist($invoice);
$em->flush();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
ReportListener的
namespace Demo\Bundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use Demo\Bundle\Entity\Invoice;
class ReportListener
{
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
$em = $args->getEntityManager();
$priceTotal = 0;
foreach ($entity->getItems() as $item)
{
$price = &$priceTotal; …Run Code Online (Sandbox Code Playgroud)
当我想在中心父div中向左或向右浮动子div时,整个设计向左或向右移动,具体取决于浮动.那么,如何浮动子div并使居中的父div成为中心.
HTML:
<div id="parent">
<div id="child-left"></div>
<div id="child-right"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#parent{
padding: 0 auto;
width: 600px;
}
#child-left{
float: left;
width: 300px;
}
#child-right{
float: right;
width: 300px;
}
Run Code Online (Sandbox Code Playgroud)
为什么父母div左/右,不留在中心?以及如何让它留在中心?
在Symfony2表单中,当试图获取实体时,Symfony期望接收QueryBuilder对象,但有时没有返回实体.在这种情况下,会出现一条错误消息:
期望类型为"Doctrine\ORM\QueryBuilder"的参数,给出"NULL"
如何使query_builder允许选项没有可用的实体.
$builder
->add('client', 'entity', array(
'class' => 'Faktura\FakturaBundle\Entity\Client',
'query_builder' => function(\Web\MyBundle\Repository\ClientRepository $er) use ($company){
return $er->getClients($company);
))
;
Run Code Online (Sandbox Code Playgroud)
ClientRepository.php
public function getClients($company)
{
$qb = $this->createQueryBuilder('c')
->select('c')
->where('c.company = :company')
->setParameter('company', $company)
->getQuery();
return $qb->getResult();
}
Run Code Online (Sandbox Code Playgroud)
实际上,它只是基本$er->findBy(array('company' => $company))方法,但我使用自定义getClients()方法