Я получаю следующее сообщение об ошибке для пользовательского модуля на компиляции в Magento 2.1.3Magento2: Вызов защищенного класса, ошибка компиляции: Неправильная зависимость
Incorrect dependency in class NAMESPACE\MODULE\Block\SOMEBLOCK in /home/www/app/code/namespace/module/Block/Someblock.php
\Magento\Framework\Filesystem already exists in context object
Вкратце, блочный код выглядит следующим образом;
namespace Namespace\Module\Block;
use Magento\Framework\App\Filesystem\DirectoryList;
class Someblock extends \Magento\Framework\View\Element\Template {
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\Filesystem $filesystem,
array $data = []
)
{
$this->_fileSystem = $filesystem;
parent::__construct($context, $data);
}
}
Вопрос заключается в том, что код инъекционный \ Magento \ Framework \ Filesystem в конструкции, когда она уже существует в унаследованном родительском классе.
Для частных лиц я знаю, что мы можем назвать тех, кто находится внутри класса блоков;
$this->someclass
Но как мы называем частные? Я пробовал это;
namespace Namespace\Module\Block;
use Magento\Framework\App\Filesystem\DirectoryList;
class Someblock extends \Magento\Framework\View\Element\Template {
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
//\Magento\Framework\Filesystem $filesystem,
array $data = []
)
{
//$this->_fileSystem = $filesystem;
parent::__construct($context, $data);
}
public function dosomething() {
$fileSystem = $this->_fileSystem;
}
}
Но я получаю $ _filesystem не определено.
Вот конструктор из родительского класса \ Magento \ Framework \ View \ Элемент \ Template
public function __construct(Template\Context $context, array $data = [])
{
$this->validator = $context->getValidator();
$this->resolver = $context->getResolver();
$this->_filesystem = $context->getFilesystem();
$this->templateEnginePool = $context->getEnginePool();
$this->_storeManager = $context->getStoreManager();
$this->_appState = $context->getAppState();
$this->templateContext = $this;
$this->pageConfig = $context->getPageConfig();
parent::__construct($context, $data);
}
Любая обратная связь с благодарностью получил
Это то, что я также пробовал - он вызывает ошибку; Шаблон фильтрации ошибок: Примечание: неопределенная переменная: файловая система – PixieMedia
$ fileSystem используется только функция dosomething(), если вам нужно использовать ее в другой функции, тогда вам нужно использовать другую переменную. –
извините, опечатка, это; Ошибка фильтра: Обратите внимание: неопределенное свойство: Пространство имен \ Module \ Block \ Someblock :: $ fileSystem Я вызываю его внутри функции непосредственно с помощью $ this-> fileSystem-> getDirectoryWrite (DirectoryList :: VAR_DIR) -> getAbsolutePath(). 'Instagram_timer'; – PixieMedia