ezPublish를 사용하는이 웹 사이트는 Symfony 2.8을 기반으로합니다. /
이 (app/
, src/
, web/
폴더를 포함 등) 프로젝트의 루트입니다Symfony 응용 프로그램에서 타사 번들의 특정 파일을 확장하는 방법은 무엇입니까?
/vendor/ezsystems/ezpublish-kernel/eZ/Publish/Core/REST/Server/Controller
:
하는 것은 간단하려면,이 하나 개의 파일에있는 클래스 BinaryContent
을 포함 BinaryContent.php
이 .
BinaryContent.php
을 수정하여 주어진 방법으로 내 자신의 특정 논리를 구현하려고합니다. 그런 식으로 번들을 확장하여이 파일을 재정의하도록 선택합니다. 따라서
는 :
- 나는 Symfony documentation하지만 클리 어리 상태에 따라 번들을 확장하려고하는이 방법으로
재정 컨트롤러 번들은을 사용하여 컨트롤러를 참조하는 경우에만 작동합니다 표준 FOSUserBundle : 등록 : 경로 및 템플릿의 구문을 등록하십시오. 이것이 최선의 방법입니다.
- I이 클래스는 서비스로 등록이 번들
services.yml
에 위치하고있다가 :parameters: ezpublish_rest.controller.binary_content.class: eZ\Publish\Core\REST\Server\Controller\BinaryContent
함께
ezpublish_rest.controller.binary_content: class: "%ezpublish_rest.controller.binary_content.class%" parent: ezpublish_rest.controller.base arguments: - "@ezpublish.fieldType.ezimage.variation_service"
I 그러므로와 동일한 서비스를 등록하려고 내 자신의 수업을 소용 없습니다. 응용 프로그램을 방문 할 때 내 자신의 BinaryContent.php
파일이 실행되지 않습니다 (나는 intentionnaly 구문 분석 오류를 명확하게 남겨 둡니다).
어떻게해야합니까?
iainn's comment에 따라 여기에 서비스를 재정의하려고합니다. 내 services.yml
파일에서
은 :
ezpublish_rest.controller.binary_content: class: Smile\CoreBundle\Core\REST\Server\Controller\BinaryContent parent: ezpublish_rest.controller.base arguments: - "@ezpublish.fieldType.ezimage.variation_service"
내 사용자 지정 응용 프로그램 번들은AppKernel.php
에서 EzPublishCoreBundle
후 라고합니다.
<?php
namespace Smile\CoreBundle\Core\REST\Server\Controller;
use eZ\Publish\Core\REST\Server\Controller\BinaryContent as BaseController;
class BinaryContent extends BaseController {}
당신은 당신이 서비스를하시기 바랍니다 무시하려고하는 방법을 보여줍니다 수 있습니까? 파일이 올바른 순서로로드 된 경우 (즉, 버전이 원본보다 나중에로드 된 경우) 이름을 사용하여 서비스를 재정의 할 수 있어야합니다. Symfony 문서들 [here] (https://symfony.com/doc/2.8/bundles/override.html)에 이미 더 많은 가이드 라인이있다. – iainn
ezpublish_rest.controller.binary_content.class 매개 변수를 조정하여 사용자 자신의 클래스를 가리 키기 만하면됩니다. 보다 정교한 접근법은 컴파일러 패스를 사용하여 서비스 정의를 수정하는 것입니다. 번들 확장을 피하십시오. 그것은 잘 돌아 가지 않았고 S4에서 사라질 것입니다. – Cerad
@Cerad> 제 자신의'parameters.yml' 파일에서'ezpublish_rest.controller.binary_content.class' 매개 변수를 내 클래스의 경로로 무효화하려고했습니다. 구문 분석 오류가 발생하지 않습니다. 내 번들은'AppKernel.php'에서 오버라이드하려고하는 써드 파티 이후에 호출됩니다. – D4V1D