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

السؤال

نشر

السلام عليكم 

اريد ارسال بريد الكتروني للمشتركين عبر laravel  job queues 

في المشروع الذي اعمل به اضفت صفحة خاصة بالبريد الالكتروني تحتوي على حقلين ادخال (واحدة للعنوان و الثانية للنص)

اريد ان اخزن ال data في هذين الحقلين 

بالطبع يجب عليي ان استخدم المتحكم حتى اقوم بهذه العملية

انا كنت قد انشأت model خاص للبريد الالكتروني و اضفت فيه حقل واحد و هو email  لكي ارسل البريد الالكتروني يجب علي اضافة حقلين اثنين title و message  

لكن استفساري هو انني مستخدم الدالة store() في هذا المتحكم , فيجب علي ان اقوم  بانشاء دالة جديدة تأخذ متغير request$  صحيح؟؟

و ايضا اضع المتغيرات title$ و message$ (حقلين الادخال) داخل صفحة ال HTML التي اريد ان ارسلها اليس كذلك ؟؟

 

Recommended Posts

  • 0
نشر (معدل)

المطلوب هو إرسال محتوى البريد الالكتروني (العنوان - الرسالة) من حقلين كالتالي

Title:
<input name="title"/>
Message:
<input name="message"/>

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

<form action="/path/to/email/send" method="POST">
  @csrf <!-- لادخال حقل الحماية من الطلبات من مواقع خارجية  -->
  Title:
  <input name="title"/>
  Message:
  <input name="message"/>
  
  <button type="submit">Send Email</button>
</form>

عند ارسال الطلب سيصل الى المتحكم الذي عينته في ملف ال web.php
داخل المتحكم في الدالة store تقوم باستخراج القيمتين من متحول الطلب، وتحضير بريد الكتروني جديد (من model ال Email) وإتمام عملية الإرسال 

public function store(Request $request) {
	$title = $request->title;
	$message = $request->message;

	// تحضير وارسال الإيميل عن طريق القيم المستخرجة من الطلب
	...
}


 

تم التعديل في بواسطة Hassan Hedr
  • 0
نشر
بتاريخ 16 دقائق مضت قال Hassan Hedr:

المطلوب هو إرسال محتوى البريد الالكتروني (العنوان - الرسالة) من حقلين كالتالي


Title:
<input name="title"/>
Message:
<input name="message"/>

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


<form action="/path/to/email/send" method="POST">
  @csrf <!-- لادخال حقل الحماية من الطلبات من مواقع خارجية  -->
  Title:
  <input name="title"/>
  Message:
  <input name="message"/>
  
  <button type="submit">Send Email</button>
</form>

عند ارسال الطلب سيصل الى المتحكم الذي عينته في ملف ال web.php
داخل المتحكم في الدالة store تقوم باستخراج القيمتين من متحول الطلب، وتحضير بريد الكتروني جديد (من model ال Email) وإتمام عملية الإرسال 


public function store(Request $request) {
	$title = $request->title;
	$message = $request->message;

	// تحضير وارسال الإيميل عن طريق القيم المستخرجة من الطلب
	...
}


 

اولا يعطيك العافية و شكرا على الرد

انا قد استخدمت الدالة store من قبل 

 public function store(Request $request)
    {
        $request->validate([
            'email' => 'required'
        ]);
        Email::create([
            'email' => $request->input('email')
        ]);
        return redirect()->back()->with('message', 'you have successfully subscribed to newsletter');;
    }

لذا يتوجب على عمل دالة جديدة و اضافة الحقلين title و message في خانة fillable ضمن ال model الخاص بال email؟

  • 0
نشر
بتاريخ 11 دقائق مضت قال Mohammad Kiblawi:

اولا يعطيك العافية و شكرا على الرد

انا قد استخدمت الدالة store من قبل 


 public function store(Request $request)
    {
        $request->validate([
            'email' => 'required'
        ]);
        Email::create([
            'email' => $request->input('email')
        ]);
        return redirect()->back()->with('message', 'you have successfully subscribed to newsletter');;
    }

لذا يتوجب على عمل دالة جديدة و اضافة الحقلين title و message في خانة fillable ضمن ال model الخاص بال email؟

في هذه الحالة يجب ان تنشئ متحكم جديد يتم فيه استخراج العنوان ومحتوى البريد الالكتروني والتحضير والارسال

لكن يجب انت تسأل نفسك ما مسؤولية المتحكم الحالي المختلفة عن المتحكم الجديد، قد تجد انه بجب استخدام متحكم واحد مسؤول عن ارسال البريد الالكتروني ويعمل بطريقتين 

  1. اما ترسل اليه المحتوى فقط (كما هو حاليا)
  2. واما ترسل معه العنوان ايضا اختياريًا (وهي الحالة الجديدة التي تريدها)

قد تحتاج لحذف الخاصية email حيث انها نفسها الخاصية message

  • 0
نشر (معدل)
بتاريخ 10 دقائق مضت قال Hassan Hedr:

في هذه الحالة يجب ان تنشئ متحكم جديد يتم فيه استخراج العنوان ومحتوى البريد الالكتروني والتحضير والارسال

لكن يجب انت تسأل نفسك ما مسؤولية المتحكم الحالي المختلفة عن المتحكم الجديد، قد تجد انه بجب استخدام متحكم واحد مسؤول عن ارسال البريد الالكتروني ويعمل بطريقتين 

  1. اما ترسل اليه المحتوى فقط (كما هو حاليا)
  2. واما ترسل معه العنوان ايضا اختياريًا (وهي الحالة الجديدة التي تريدها)

قد تحتاج لحذف الخاصية email حيث انها نفسها الخاصية message

نسيت ان اخبرك ان هذه الدالة store استخدمتها لحفظ المستخدمين الذين اشتركوا بالنشرة البريدية 

لذلك لا يمكنني حذف ال email 

لان هذه الدالة عملها حفظ ايميلات المستخدمين الذين اشتركوا بالنشرة البريدية داخل المتحكم email controller

انا اقصد ان اقوم بانشاء دالة جديدة في نفس المتحكم يقوم بحفظ العنوان و الرسالة التي ادخلها المدير 

لكني بحاجة الى اضافة حقول جديدة على قاعدة البيانات الخاصة ب ال model email و هم title و message اليس كذلك؟ 

تم التعديل في بواسطة Mohammad Kiblawi
تعديل
  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mohammad Kiblawi:

نسيت ان اخبرك ان هذه الدالة store استخدمتها لحفظ المستخدمين الذين اشتركوا بالنشرة البريدية 

لذلك لا يمكنني حذف ال email 

لان هذه الدالة عملها حفظ المستخدمين الذين اشتركوا بالنشرة البريدية داخل المتحكم email controller

انا اقصد ان اقوم بانشاء دالة جديدة في نفس المتحكم يقوم بحفظ العنوان و الرسالة التي ادخلها المدير 

لكني بحاجة الى اضافة حقول جديدة على قاعدة البيانات الخاصة ب ال model email و هم title و message اليس كذلك؟ 

إذًا مسؤولية هذا المتحكم هو ادارة المشتركين في النشرة البريدية

صحيح يجب انشاء متحكم جديد مسؤوليته ارسال البريد الالكتروني واستخدام الدالة store الخاصة به

نعم يجب اضافة الحقول الجديدة message - title الى Email model واضافتها الى المصفوفة fillable وانشاء تهجير جديد لاضافة الحقول الى الجدول اذا كنت تريد تخزين البيانات ضمن قاعدة البيانات

  • 0
نشر
بتاريخ 2 دقائق مضت قال Hassan Hedr:

 

صحيح يجب انشاء متحكم جديد مسؤوليته ارسال البريد الالكتروني واستخدام الدالة store الخاصة به

 

هل يمكنني ان افعل ذلك في ذات المتحكم ؟؟ اي ان اقوم بانشاء دالة جديدة مثلا sendmails(request $request)  داخل المتحكم ال email controller ؟ او هذا غير محبذ؟

  • 0
نشر (معدل)

تقنيا يمكنك ويجب ربط الدالة الجديدة sendmails بال route الصحيح داخل web.php مع الطريقة post

لكن دوما عندما تبتعد عن دوال للمتحكم الرئيسية index - show - create - store - edit - update - destroy هذا مؤشر لإمكانية انشاء متحكم جديد بمسؤولية جديدة محددة بالالتزام بالدوال الاساسية فقط، هذا يجعل الشيفرة اوضح للقراءة لاحقا

تم التعديل في بواسطة Hassan Hedr
  • 0
نشر (معدل)
بتاريخ 16 دقائق مضت قال Hassan Hedr:

بالتأكيد لا حرج بالسؤال وكل سؤال له قيمة

شكرا لك❤

حسناً , لقد قمت برفع مشروعي على منصة heroku و اريد ان اتحكم او ارى قاعدة البيانات فيها كيف لي بذلك؟

هل هنالك طريقة؟ او هل يمكنني من خلال سطر الاوامر  الخاصة بالمنصة ان اقوم بعمليات خاصة بال database (crud)

على سبيل المثال اريد ان اجعل المستخدم العادي الى مدير (اي تعديل على role لل user)

و هل هنالك command خاص لاجراء عمليات الخاصة بال database في سطر الاوامر داخل  visual studio ؟(اي يمكنني قيام عمليات crud داخل سطر الاوامر ولكن (locally) اي على خادم laragon او xampp وليس على اي منصة اخرى)

تم التعديل في بواسطة Mohammad Kiblawi
اضافة
  • 0
نشر
بتاريخ 3 دقائق مضت قال Mohammad Kiblawi:

شكرا لك❤

حسناً , لقد قمت برفع مشروعي على منصة heroku و اريد ان اتحكم او ارى قاعدة البيانات فيها كيف لي بذلك؟

هل هنالك طريقة؟ او هل يمكنني من خلال سطر الاوامر  الخاصة بالمنصة ان اقوم بعمليات خاصة بال database (crud)

على سبيل المثال اريد ان اجعل المستخدم العادي الى مدير (اي تعديل على role لل user)

و هل هنالك command خاص لاجراء عمليات الخاصة بال database في سطر الاوامر داخل  visual studio ؟(اي يمكنني قيام عمليات crud داخل سطر الاوامر ولكن (locally) اي على خادم laragon او xampp وليس على اي منصة اخرى)

هل الاوامر التي تريد تنفيذها متعلقة بعمل التطبيق ؟

اذا كان كذلك يفضل انشاء Console Commands خاصة داخل مشروعك وتنفيذها من سطر الاوامر مثل اوامر artisan

  • 0
نشر (معدل)
بتاريخ 6 دقائق مضت قال Hassan Hedr:

هل الاوامر التي تريد تنفيذها متعلقة بعمل التطبيق ؟

اذا كان كذلك يفضل انشاء Console Commands خاصة داخل مشروعك وتنفيذها من سطر الاوامر مثل اوامر artisan

نعم 

لان عند تشغيل التطبيق على المنصة كل ال data التي قمت بانشائها تختفي 

اي اريد مثلا من جعل ال role من 2 الى 1  اي يصبح المستخدم مدير

تم التعديل في بواسطة Mohammad Kiblawi
تعديل
  • 0
نشر
بتاريخ 1 دقيقة مضت قال Mohammad Kiblawi:

نعم 

لان عند تشغيل التطبيق على المنصة كل ال data التي قمت بانشائها تختفي 

يمكنك الاستفادة من انشاء Seeder مجهز بالبيانات التي تريد انشاءها او تعديلها وتنفيذه على المخدم ايضا عن طريق اوامر artisan

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...