Saya melihat dalam di.xml
file - file dari inti bahwa beberapa argumen memiliki tipe init_parameter
tetapi nilai-nilai parameter semua konstanta.
<type name="Magento\Framework\View\Page\Config\Renderer">
<arguments>
<argument name="appMode" xsi:type="init_parameter">Magento\Framework\App\State::PARAM_MODE</argument>
</arguments>
</type>
atau yang ini
<type name="Magento\Framework\App\Cache\State">
<arguments>
<argument name="banAll" xsi:type="init_parameter">Magento\Framework\App\Cache\State::PARAM_BAN_CACHE</argument>
</arguments>
</type>
dan banyak lagi.
Tetapi dari apa yang saya lihat dalam interpreter yang terkait init_parameter
, interpreter konstan digunakanMagento\Framework\App\Arguments\ArgumentInterpreter::evaluate
public function evaluate(array $data)
{
return ['argument' => $this->constInterpreter->evaluate($data)];
}
Tetapi hasilnya agak berbeda dari Magento\Framework\Data\Argument\Interpreter\Constant::evaluate
public function evaluate(array $data)
{
if (!isset($data['value']) || !defined($data['value'])) {
throw new \InvalidArgumentException('Constant name is expected.');
}
return constant($data['value']);
}
Bisakah seseorang menjelaskan tolong bagaimana init_parameter
tipenya bekerja dan bagaimana semuanya terjadi di bawah tenda?
Apa semua nilai `xsi: type` yang diizinkan dalam xml dari Magento2
http://devdocs.magento.com/guides/v2.0/extension-dev-guide/build/di-xml-file.html
Format simpul :
<argument xsi:type="init_parameter">{Constant::NAME}</argument>
Deskripsi : Argumen global dari suatu aplikasi yang diwakili
Constant::NAME
dilihat dan diteruskan sebagai argumen.Nilai yang mungkin : Konstan argumen global yang berisi nama
Format Node :
<argument xsi:type="const">{Constant::NAME}</argument>
Keterangan : Constant :: NAME diberikan sebagai argumen.
Nilai yang mungkin : Semua nama konstan adalah mungkin.
Mari kita ambil contoh di bawah ini.
magento \ vendor \ magento \ module-store \ etc \ di.xml
magento \ vendor \ magento \ module-store \ Model \ StoreResolver.php
Ide itu sederhana. Anda dapat langsung mengirimkan variabel Anda & nilainya dari
di.xml
file. Alih-alih mendefinisikan nilai-nilai itu dalam Model Anda.Jadi Anda hanya perlu menginisialisasi variabel Anda & Anda akan mendapatkan nilai dari Anda
di.xml
Semoga ini bisa membantu
sumber