찾다

 >  Q&A  >  본문

Symfony에서 다른 별칭으로 동일한 서비스를 주입합니다.

<p>질문하시는 내용이 정확한지 잘 모르겠으니 설명하겠습니다<br /><br />저는 다음 구성으로 foselasticabundance를 사용합니다:</p><p>< ;br /> </p> <pre class="brush:php;toolbar:false;"># 문서 읽기: https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/doc/setup.md fos_elastica: 클라이언트: 기본값: { URL: '%env(ELASTICSEARCH_URL)%' } 인덱스: 조항: index_name: '기사' 고집: # 드라이버는 orm, mongodb 또는 phpcr일 수 있습니다. 드라이버:orm 모델: AppEntitySiteFArticleFArticleProp 제공자: ~ 검색기: ~</pre> <p><span style="white-space:normal;">이 방법으로</span>내 기사 색인을 쿼리하려면:</p> <pre class="brush:php;toolbar:false;"><?php 네임스페이스 AppService; FOSElasticaBundleFinderTransformedFinder를 사용하세요. FArticleService 클래스 { 공개 함수 __construct( 개인 읽기 전용 TransformedFinder $finder, ) { } 공개 함수 쿼리(배열 $query, int $page, int $size) { $results = $this->finder->createRawPaginatorAdapter($query)->getResults(($page * $size) - $size, $size); } }</pre> <p>但是有个错:</p> <pre class="brush:php;toolbar:false;">DefinitionErrorExceptionPass.php 라인 51에서: "AppServiceFArticleService" 서비스를 자동 연결할 수 없습니다. "__construct()" 메서드의 "$finder" 인수는 "FOSElasticaBundleFinderTransformedFinder" 클래스를 참조하지만 해당 서비스가 없습니다. 이 클래스의 별칭을 기존 "fos_elastica.finder.articles" 서비스에 지정해야 할 수도 있습니다.</pre> <p>我改了一下</p> <pre class="brush:php;toolbar:false;"># api/config/services.yaml 서비스: #... FOSElasticaBundleFinderTransformedFinder: 별칭: fos_elastica.finder.articles 공개: true</pre> <p>这样还挺好<br /><br />但现에서 我要增加第二个指标,0百分</p><p><code></code> ;</p> <pre class="lang-yaml Prettyprint-override"><code># 문서 읽기: https://github.com/FriendsOfSymfony/FOSElasticaBundle/blob/master/doc/setup.md fos_elastica: 클라이언트: 기본값: { URL: '%env(ELASTICSEARCH_URL)%' } 인덱스: 조항: index_name: '기사' 고집: # 드라이버는 orm, mongodb 또는 phpcr일 수 있습니다. 드라이버 : orm 모델: AppEntitySiteFArticleFArticleProp 제공자: ~ 검색기: ~ fdocentes: index_name: 'fdocentetes' 고집: # 드라이버는 orm, mongodb 또는 phpcr일 수 있습니다. 드라이버 : orm 모델: AppEntitySageFDocentete 제공자: ~ 검색기: ~ <p>저는 fdocenttetes를 제작하는 데 있어 fos_elastica.finder라는 이름을 갖고 있지 않다는 것을 알고 있습니다.文章,所以如果我创建另一个服务fdocteteservice:</p> <pre class="lang-php Prettyprint-override"><code><?php 네임스페이스 AppService; FOSElasticaBundleFinderTransformedFinder를 사용하세요. 클래스 FDocenteteService { 공개 함수 __construct( 개인 읽기 전용 TransformedFinder $finder, ) { } 공개 함수 쿼리(배열 $query, int $page, int $size) { // 인덱스 fdocentetes에 대해 쿼리하는 동안 인덱스 기사에 대해 쿼리합니다. $results = $this->finder->createRawPaginatorAdapter($query)->getResults(($page * $size) - $size, $size); } } <p>咋办</p> <pre class="brush:php;toolbar:false;">$ php bin/console 디버그:컨테이너 | grep fos_elastica.finder "fos_elastica.finder.articles"에 대한 FOSElasticaBundleFinderTransformedFinder 별칭 fos_elastica.finder FOSElasticaBundleFinderTransformedFinder fos_elastica.finder.articles FOSElasticaBundleFinderTransformedFinder fos_elastica.finder.fdocentetes FOSElasticaBundleFinderTransformedFinder</pre> <pre class="brush:php;toolbar:false;">$ php bin/console 디버그:autowiring | grep fos_elastica.finder FOSElasticaBundleFinderTransformedFinder(fos_elastica.finder.articles)</pre> <p><br /></p>
P粉662802882P粉662802882483일 전354

모든 응답(1)나는 대답할 것이다

  • P粉777458787

    P粉7774587872023-08-08 18:16:46

    이것은 기존 프로젝트의 솔루션입니다.

    으아아아 으아아아

    다른 방법도 있을 거에요.

    자동 호출을 통해 동일한 개체를 두 번 주입하는 것은 불가능합니다. 따라서 ContainerInterface가 주입됩니다.

    그런 다음 이 서비스를 복제해야 합니다. 너무 오래되어서 기억이 잘 안나네요


    회신하다
    0
  • 취소회신하다