回答が見つからないため、回答が見つかりません。 私のアプリケーションにデータベースロールモデルがあります。ユーザーは役割を持つことができますが、この役割はデータベースに格納する必要があります。エンティティの中でsymfony 2.0サービスを取得しています
しかし、ユーザーはデータベースからデフォルトロールを追加する必要があります。だから私は、サービスを作成しました:
alef.role_service:
class: Alef\UserBundle\Service\RoleService
arguments: [%doctrine.orm.entity_manager%]
そして今、私は2つの場所でそれを使用したい:
<?php
namespace Alef\UserBundle\Service;
use Alef\UserBundle\Entity\Role;
/**
* Description of RoleService
*
* @author oracle
*/
class RoleService {
const ENTITY_NAME = 'AlefUserBundle:Role';
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function findAll()
{
return $this->em->getRepository(self::ENTITY_NAME)->findAll();
}
public function create(User $user)
{
// possibly validation here
$this->em->persist($user);
$this->em->flush($user);
}
public function addRole($name, $role) {
if (($newrole = findRoleByRole($role)) != null)
return $newrole;
if (($newrole = findRoleByName($name)) != null)
return $newrole;
//there is no existing role
$newrole = new Role();
$newrole->setName($name);
$newrole->setRole($role);
$em->persist($newrole);
$em->flush();
return $newrole;
}
public function getRoleByName($name) {
return $this->em->getRepository(self::ENTITY_NAME)->findBy(array('name' => $name));
}
public function getRoleByRole($role) {
return $this->em->getRepository(self::ENTITY_NAME)->findBy(array('role' => $role));
}
}
私services.yml
はあり UserController
とUser
エンティティ。どのようにしてそれらをエンティティの中に入れられますか?
$this->get('alef.role_service');
しかし、どのようにエンティティ内のサービスを受けるために:私はちょうどに必要だと思うコントローラ用として ?
最善の解決策だと質問に対する最も正確な答え。私は "あなたができない"、 "それは間違ったデザインパターン"、または "それはすべてを破滅させる、あなたは馬鹿だ"のような答えは嫌いです。誰も何も指導者によって書かれていない。 「悪い(時には)良い」;)もう一度ありがとう。 –
悲しいことに、「間違ったデザインパターン」、「MCVモデル」、「セパレートビジネスレイヤー」など。 @Kaiのお返事ありがとうございます、私が探していたものです。 –