اذهب إلى المحتوى
  • 0

كيفية تمرير مصفوفة Array من لارافيل Laravel إلى JavaScript؟

Emad Saif

السؤال

لدي مصفوفة Array بالشكل التالي:

$arr = [
  "id" => 1,
  "name" => "Emad Saif",
  "email" => "mail@gmail.com"
  // ...
];

حاولت إستخدام الكود التالي:

var arr = {{ $arr }};

لكن يبدو أن هذه الطريقة تنجح فقط مع النصوص والأرقام وليس المصفوفات، كيف  أقوم بتمرير هذه المصفوفة إلى JavaScript في أحد قوالب blade؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

هناك 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

الكود الخاص بك صحيح لكن هناك خطأ بسيط في الكود التالي:-

var arr = {{ $arr }};

هنا لو لاحظت أنت طبعت مصفوفة PHP في محتوى الـجافاسكربت، وهذا غير ممكن ، لذا يجب عليك إضافة شيء بسيط وهو الدالة التالية:

json_encode(array)

ليكون الكود بالشكل التالي

var arr = {{ json_encode($arr) }};

من المفترض الآن أن تعمل المصفوفة بشكل سليم مع الجافاسكربت.

كذلك يمكنك إستخدام الطريقة التالية:-

var array = new Array({{ implode(',',$arr); }});

ستؤدي نفس الوظيفة والغرض.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك تحويل المصفوفة التي لديك الى سلسلة نصية مفصول عن كل منها بفاصلة اجنبية ( , ) عن طريق الوظيفة 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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

يمكنك استخدام مكونات لارافل لتحقيق ذلك بطريقتين:

  • استخدام json@ ضمن ملف عرض blade كالتالي:
    var arr = @json($arr);

     

  • أو استخدام Illuminate\Support\Js لتحقيق ذلك ويضمن هذا التابع تحويل المحارف ضمن المتغير لتناسب صفحات HTML كالتالي: 
    var arr = {{ Illuminate\Support\Js::from($arr) }};

     

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...