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

السؤال

نشر

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

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

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

var arr = {{ $arr }};

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

Recommended Posts

  • 1
نشر

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

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

     

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

     

  • 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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...