を持続?例えば、このような特定の標準的な新しいアクション:スリミングダウンSymfony2のコントローラと私は、私の<strong>コントローラのコード</strong>少しだけスリム化することができますいくつかの<strong>は論理</strong>を持続離れる、MVCパターンとSymfony2のの観点からロジック
public function newAction(\Symfony\Component\HttpFoundation\Request $request)
{
// Create a new entity and a new form type for managing
$entity = $this->createNewEntity();
$form = $this->createForm($this->createNewFormType(), $entity);
// If it's GET just return the view
if('GET' == $request->getMethod())
return array('form' => $form->createView());
// It's POST request so bind the form
$form->bindRequest($request);
// ... and if it's valid just persist the entity
if($form->isValid()) :
$em = $this->getEntityManager(); // Should be carried by controller?
$em->persist($entity); // Should be carried by controller?
$em->flush(); // Should be carried by controller?
// Redirect the user to the default page
return $this->redirect($this->getOnNewSuccessRedirectUrl($entity));
endif;
// Return the view plus errors
return array(
'errors' => $this->getValidator()->validate($entity),
'form' => $form->createView()
);
}
は、リポジトリにそのロジックを動かす正しいだろうか?例(警告:動作しない場合があります):
class BaseRepository extends \Doctrine\ORM\EntityRepository
{
/**
* Persist the entity (either new or existent)
*
* @param object $entity
*/
public function save($entity)
{
$em = $this->_em;
$em->persist($entity);
$em->flush();
}
/**
* Delete the entity.
*
* @param object $entity
*/
public function delete($entity)
{
$em = $this->_em;
$em->remove($entity);
$em->flush();
}
}
コントローラコードは次のようになります。
if($form->isValid()) :
$this->getRepository()->save($entity);
// Redirect the user to the default page
return $this->redirect($this->getOnNewSuccessRedirectUrl($entity));
endif;
$ em-> flush($ entity)を呼び出します。 $ em-> flush()の代わりに。あなたは与えられたエンティティに対してのみ変更を行い、サブエンティティは関連しています。 –