Array multi dimensi ranting - Tidak dapat mengakses nilai
Saya memiliki array multidimensi, tetapi karena alasan tertentu ranting saya tidak merespons dengan nilai array.
Di bawah ini adalah Dump ranting saya
array (size=2)
0 =>
object(App\Models\Entities\Strategy\CriticalSuccessFactor)[5]
private int 'csfId' => int 26
private iterable 'kpis' =>
array (size=1)
0 =>
object(App\Models\Entities\Strategy\KeyPerformanceIndicator)[10]
...
1 =>
object(App\Models\Entities\Strategy\CriticalSuccessFactor)[11]
private int 'csfId' => int 27
private iterable 'kpis' =>
array (size=1)
0 =>
object(App\Models\Entities\Strategy\KeyPerformanceIndicator)[12]
Saya menemukan tautan ini, tetapi tidak menjawab pertanyaan saya.
Array Multidimensi di Twig
Di bawah ini adalah representasi dari data array yang saya kerjakan
csfs[
private int 'csfId' => int 26
'kpis' => [
private int 'kpiId' => int 42
'objectives' => [
private int 'objectivesId' => int 40
]
]
]
ketika saya mengeluarkan variabel dengan ranting saya tidak mendapatkan apa-apa.
Ini Ranting saya:
{% for csf in csfs %}
{% for kpi in csf.kpis %}
<p> kpi ID : {{ kpi.kpiId }}</p>
{% endfor %}
{% endfor %}
{{csf.csfId}} berfungsi. Ini mencetak ID.
Saya bisa mendapatkan nilai array pertama tidak ada masalah. Tetapi saya tidak dapat mengakses array kpis
Jawaban
Seperti yang terlihat dalam dokumentasi dari twig,
Demi kenyamanan foo.bar melakukan hal-hal berikut pada lapisan PHP:
check if foo is an array and bar a valid element; if not, and if foo is an object, check that bar is a valid property; if not, and if foo is an object, check that bar is a valid method (even if bar is the constructor - use __construct() instead); if not, and if foo is an object, check that getBar is a valid method; if not, and if foo is an object, check that isBar is a valid method; if not, and if foo is an object, check that hasBar is a valid method; if not, return a null value.Twig juga mendukung sintaks khusus untuk mengakses item pada array PHP, foo ['bar']:
check if foo is an array and bar a valid element; if not, return a null value.
Jadi, Anda memiliki dua opsi di sini:
- Sesuaikan modelnya
CriticalSuccessFactor
Anda dapat mengganti nama metode getKeyPerformanceIndicatorsmenjadi getKpisatau menambahkan metode getKpisyang hanya referensigetKeyPerformanceIndicators
public function getKpis() {
return $this->getKeyPerformanceIndicators();
}
- Sesuaikan template Anda dan panggil metode
getKeyPerformanceIndicatorssecara langsung daripada membiarkantwigsecara ajaib memutuskan metode tersebut
{% for kpi in csf.getKeyPerformanceIndicators%}
...
{% endfor %}