하지마
이것은 ObjectManager::getInstance()->create()
템플릿에서 사용 하는 것과 같습니다 !
대신 도우미를 생성자 종속성으로받는 사용자 지정 블록을 사용하고 도우미 메서드를 호출하는 프록시 메서드를 추가하십시오.
템플릿에서 :
$block->customMethod()
블록에서 :
public function __construct(Path/To/Helper/Class $helperClass, ...other dependencies...)
{
$this->helper = $helperClass;
// ...other assignments and call to parent::__construct()
}
public function customMethod()
{
return $this->helper->customMethod();
}
OOP 원칙에서 이것은 "계량법"을 위반하지 않도록합니다. 템플릿 대신 비즈니스 로직을 블록으로 캡슐화합니다. 부작용으로 로직이 블록으로 이동함에 따라 로직을 더욱 테스트 할 수 있습니다.
헬퍼 클래스에 어떤 로직을 넣었는지에 관해서는 Magento 2 헬퍼에서 대부분 모델이 아닌 것과 같은 서비스에 적합하지만 가격 형식과 같은 재사용 가능한 코드가 포함되어 있음을 알았습니다. 더 좋은 예를 지금 생각하지 마십시오).
di.xml
블록 클래스 유형에 기본 설정을 사용하는 것처럼 보이지만 일부 레이아웃 구성을 유지하지는 않습니다. 예를 들어 class에 대해 시도했지만\Magento\Catalog\Block\Product\View\Type\Simple
템플릿default.phtml
에 사용 된 템플릿은 무시됩니다. 실마리가 전혀 없다