2016-09-30 1 views
0

안녕하세요 :) 심포니 3을 사용해야하는 연습 문제에 빠져 있습니다. 서비스가 작동하는 방식을 이해할 수없는 것 같아요 ... 저는 운동 코드에 도움이 필요하지 않습니다. 단지 논리적 인 부분 exercice의 목적은 더보기symfony에서 서비스 사용

을 필요로하지 (내 경우에는 데이터베이스 일 수를 제거하기 위해 무엇을 결정하는 매개 변수가 될 것입니다 x)는 데이터베이스 http://localhost/purge/x의 일부 요소를 제거하는 것입니다

을 그래서 저장소에서 메소드를 호출하여 제거해야하는 모든 요소의 결과를 제공하는 컨트롤러에 대한 경로를 수행합니다.

그러나 연습 문제는 저에게 저장소 + 서비스에서 메소드를 사용하도록 요청하지만 서비스가 수행 할 수있는 것을 이해하지 못합니까 ?? 나는 서비스 호출 등을하는 법을 알고있다. 그러나이 경우 나는 내 서비스에 무엇을 할 수 있는지 이해하지 못한다. 왜 내 생각을 사용하는 것보다 낫다.

, 그것은 분명 같은 감사합니다 :) 아마

+0

나에게 잔인한 것처럼 보이는 서비스를 사용합니다. 여러분이 말했듯이, 단순히 저장소 메소드를 사용하여 엔티티를 제공 한 다음 컨트롤러에서 엔티티를 제거하지 않는 것이 어떻습니까? – DevDonkey

+1

당신이 말했듯이 컨트롤러가 현재하는 일을해야한다고 생각합니다 : * 내가 제거해야하는 모든 요소의 결과를 저장소에 저장하는 메소드를 호출하면됩니다. 그것을 제외하고 DB에서 제거해야합니다. 제 생각에이 연습은 다른 서비스에 의존하는 서비스를 만드는 것에 관한 것입니다. –

+0

리포지토리가 결과를 얻고이 결과를 사용하여 데이터베이스에서 해당 결과를 제거했음을 의미합니까? –

답변

0

뭔가 희망 :

class Purger 
{ 
    public function __construct(EntityRepository $repository) 
    { 
     $this->repository = $repository; 
    } 
    public function purge($days) 
    { 
     // Do what needs to be done 
     $itemsToPurge = $this->repository->whatever... 
    } 
} 
// Controller Action 
$purger = $this->get('purger'); 
$purger->purge($days); 

# services.yml 
my_repository: 
    class: MyBundle\Doctrine\MyRepository 
    factory: ['@doctrine.orm.entity_manager', 'getRepository'] 
    arguments: ['MyBundle\Entity\MyEntity'] 
purger: 
    class: MyBundle\Purger 
    arguments: ['@my_repository'] 

을 그리고 여분의 신용에 대한 서비스로 컨트롤러를 정의하고 직접 정화기를 주입. 그러면 서비스의 힘과 왜 공과가 존재하는지 더 잘 알 수 있습니다.

+0

알았습니다. 당신이 설명하는 것을 이해 합니다만, 함수 생성자를 만드는 법을 보지 못했습니다 ... 우리가 그것을 사용하도록되어 있다고 생각하지 않습니다. (services.yml의 factory와 동일합니다), 빌드하는 법을 배웠습니다. 간단한 서비스 때문에 내 서비스가 무엇을 할 수 있는지 보지 못합니다. (내가 알고 있어야하는 것) –

+0

강사로부터 설명을 얻는 것이 더 낫습니다. 내가 게시 한 것은 거의 표준이다. – Cerad

+0

다음은 우리가 가정 한 최종 답입니다. - 저장소에서 제거 할 광고를 잡는 방법을 만듭니다. -이 방법으로 광고를 제거하는 서비스를 만듭니다. 서비스를 만드는 것이 목적이었습니다. 광고보다 다른 것을 제거하도록 전화 할 수있다. –