Emad Saif نشر 3 أبريل 2022 أرسل تقرير نشر 3 أبريل 2022 لدي مصفوفة Array بالشكل التالي: $arr = [ "id" => 1, "name" => "Emad Saif", "email" => "mail@gmail.com" // ... ]; حاولت إستخدام الكود التالي: var arr = {{ $arr }}; لكن يبدو أن هذه الطريقة تنجح فقط مع النصوص والأرقام وليس المصفوفات، كيف أقوم بتمرير هذه المصفوفة إلى JavaScript في أحد قوالب blade؟ 1 اقتباس
1 Hassan Hedr نشر 4 أبريل 2022 أرسل تقرير نشر 4 أبريل 2022 يمكنك استخدام مكونات لارافل لتحقيق ذلك بطريقتين: استخدام json@ ضمن ملف عرض blade كالتالي: var arr = @json($arr); أو استخدام Illuminate\Support\Js لتحقيق ذلك ويضمن هذا التابع تحويل المحارف ضمن المتغير لتناسب صفحات HTML كالتالي: var arr = {{ Illuminate\Support\Js::from($arr) }}; اقتباس
1 Ahmed Abu Hatab نشر 3 أبريل 2022 أرسل تقرير نشر 3 أبريل 2022 هناك Package جاهزة من laracasts ، هذه ال Package تدعى utilities ، ستقوم بتنزيلها من خلال ال composer من خلال هذا الأمر . composer require laracasts/utilities وتستطيع أستخدامها قبل ما تنفذ return ل view ، مثل هذا Javascript::put([ 'name' => 'Ahmed', 'Age' => 23, ]); ثم ذهبت الى ملف js وقمت بطباعة console.log(name); سيظهر الناتج هو Ahmed . وكذلك يمكنك تمرير array بشكل طبيعي من Blade الى JS . اقتباس
1 Ahmed Sayed25 نشر 3 أبريل 2022 أرسل تقرير نشر 3 أبريل 2022 الكود الخاص بك صحيح لكن هناك خطأ بسيط في الكود التالي:- var arr = {{ $arr }}; هنا لو لاحظت أنت طبعت مصفوفة PHP في محتوى الـجافاسكربت، وهذا غير ممكن ، لذا يجب عليك إضافة شيء بسيط وهو الدالة التالية: json_encode(array) ليكون الكود بالشكل التالي var arr = {{ json_encode($arr) }}; من المفترض الآن أن تعمل المصفوفة بشكل سليم مع الجافاسكربت. كذلك يمكنك إستخدام الطريقة التالية:- var array = new Array({{ implode(',',$arr); }}); ستؤدي نفس الوظيفة والغرض. اقتباس
1 Adnane Kadri نشر 3 أبريل 2022 أرسل تقرير نشر 3 أبريل 2022 يمكنك تحويل المصفوفة التي لديك الى سلسلة نصية مفصول عن كل منها بفاصلة اجنبية ( , ) عن طريق الوظيفة implode . ثم بعد اسنادها الى متغير جافاسكربت ستقوم هاته الأخيرة بالتقاطها كمصفوفة ، يكون ذلك كالتالي: var js_array = [ "{{ implode('","' ,$php_array) }}" ]; مثال عملي: <?php $php_array = ['item1' ,'item2']; $str = '"'.implode('","', $php_array).'"'; ?> <script> var js_arr = [<?php echo $str ;?>]; console.log(js_arr); // ["item1","item2"] </script> خرج المصفوفة التي لديك مثلا سيكون كـ: ["1","Emad Saif","mail@gmail.com"] قد تحتاج التعرف أكثر على الوظيفة implode اقتباس
السؤال
Emad Saif
لدي مصفوفة Array بالشكل التالي:
حاولت إستخدام الكود التالي:
لكن يبدو أن هذه الطريقة تنجح فقط مع النصوص والأرقام وليس المصفوفات، كيف أقوم بتمرير هذه المصفوفة إلى JavaScript في أحد قوالب blade؟
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.