Mohammed Abu Yousef نشر 20 أبريل 2021 أرسل تقرير نشر 20 أبريل 2021 أريد عندما يقوم المستخدم سواء بعملية ( login / register )، وكان رقم الجوال مسجل في قاعدة البيانات، أن يقوم بإظهر رسالة مناسبة له. ملاحظة / ال validation من جهة Laravel جاهز، ويقوم فعلا بإرجاع رسالة أنه يجب أن يكون unique اقتباس
0 محمد صقر3 نشر 20 أبريل 2021 أرسل تقرير نشر 20 أبريل 2021 (معدل) يمكنك استخدم الرسائل الخاص بك عن طريق تعريف مصفوفه خاصه تحتوي الرسائل التي تحتاجها مصفوفة الشروط $rules = array( 'phone' => 'required|unique:users,phone' ); مصفوفة تحتوي علي الرسائل التي تظهر في حالة حدوث أخطاء $messages = array( 'phone.required' => 'Phone is required.', 'phone.unique' => 'Phone must be unique.', ); فحص الداتا المدخله من المستخدم و ظهور الاخطاء في حالة وجود أخطاء $validator = Validator::make( $request->all(), $rules, $messages ); if ( $validator->fails() ) { return [ 'success' => 0, 'message' => $validator->errors()->toArray() ]; } ويمكن فصل عملية ال Validation في كلاس منفصل يسمي FormRequest وتنقل كل عمليات ال Validation داخل هذا الكلاس إنشاء الكلاس عن طريق أمر في لارفال ويتم إنشاءه داخل مجلد app\Http\Requests php artisan make:request AuthRequest ثم تقوم باضافة عمليات ال validation داخل دالة ال rules وإضافة الرسائل الخاصه داخل دالة messages <?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Http\Request; class AuthRequest extends FormRequest { public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ 'phone' => 'required|unique:users,phone', ]; } public function messages() { return [ 'phone.required' => 'Phone is required', 'phone.unique' => 'Phone is unique' ]; } } ثم تستدعي هذا الكلاس داخل Controller وسيقوم ال AuthRequest بإظهار الاخطاء في حالة وجود أخطاء <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Http\Requests\AuthRequest; class AuthController extends Controller { public function login(AuthRequest $request) { // $validator = Validator::make($request->all(), [ // 'phone' => 'required|unique:users,phone' // ]);// end of validator // if ($validator->fails()) { // return Redirect::back()->withErrors($validator); // }//end of if // do register or login operation // .......... }// end of login } تم التعديل في 20 أبريل 2021 بواسطة محمد صقر3 1 اقتباس
0 Mohammed Abu Yousef نشر 20 أبريل 2021 الكاتب أرسل تقرير نشر 20 أبريل 2021 نعم، فعلت هذا الكلام، ماذا أفعل من جهة Flutter ؟ اقتباس
0 محمد صقر3 نشر 20 أبريل 2021 أرسل تقرير نشر 20 أبريل 2021 تقوم بفحص ال api response إذا بيحتوي علي مصفوفة errors بتظهر للمستخدم رسالة بالخطاء بحيث يقوم بإدخال رقم اخر 1 اقتباس
1 Adnane Kadri نشر 20 أبريل 2021 أرسل تقرير نشر 20 أبريل 2021 (معدل) الان و بعد الإنتهاء من جانب الباك اند يتطلب عليك التحقق إن كان الرد من الـ API يحمل أخطاء بأكواد حالات معينة ومن ثم التصرف بناء عليه , كأن تقوم بتعطيل عملية التسجيل أو مواصلة العملية بعد تسجيل التوكن و اعادة التوجيه . و هذا طبعا يخضع لأكواد الحالات بالـ API الذي تقوم بجلب منه البيانات و يخضع أيضا لتعريفك للـ errors . فعلى سبيل المثال يكون الكود كالتالي : // قم باستدعاء الدالة من المكان الصحيح login() async{ var response = await http.post('/your-end-point',auth_data); if(response.statusCode == 422){ print(jsonDecode(response.body['errors'])) // طباعة الاخطاء في حالة وجودها } else{ // اكمال عملية تسجيل الدخول و عمل اعادة التوجيه بعد تسجيل التوكن وحفظه } } ومن المفضل في الباك اند في اللارافل استعمال الواجهة : <?php use Illuminate\Support\Facades\Validator; .. عوضا عن الميثود validate ضمن الـ instance الذي اسمه Request : <?php class myController extends Controller{ public function myMethod(Request $request){ $request->validate($rules); } } حتى تتحصل على حرية أكبر ولا تترك الـ Laravel Exceptions يتولى إعادة التوجيه و تسجيل الأخطاء بالجلسة التي هي من المفروض خارج العملية فيما يخص بناء الAPI و باقي العملية. تم التعديل في 20 أبريل 2021 بواسطة Adnane Kadri أخطاء إملائية 1 اقتباس
0 Mohammed Abu Yousef نشر 21 أبريل 2021 الكاتب أرسل تقرير نشر 21 أبريل 2021 بتاريخ 4 ساعات قال Adnane Kadri: الان و بعد الإنتهاء من جانب الباك اند يتطلب عليك التحقق إن كان الرد من الـ API يحمل أخطاء بأكواد حالات معينة ومن ثم التصرف بناء عليه , كأن تقوم بتعطيل عملية التسجيل أو مواصلة العملية بعد تسجيل التوكن و اعادة التوجيه . و هذا طبعا يخضع لأكواد الحالات بالـ API الذي تقوم بجلب منه البيانات و يخضع أيضا لتعريفك للـ errors . فعلى سبيل المثال يكون الكود كالتالي : // قم باستدعاء الدالة من المكان الصحيح login() async{ var response = await http.post('/your-end-point',auth_data); if(response.statusCode == 422){ print(jsonDecode(response.body['errors'])) // طباعة الاخطاء في حالة وجودها } else{ // اكمال عملية تسجيل الدخول و عمل اعادة التوجيه بعد تسجيل التوكن وحفظه } } ومن المفضل في الباك اند في اللارافل استعمال الواجهة : <?php use Illuminate\Support\Facades\Validator; .. عوضا عن الميثود validate ضمن الـ instance الذي اسمه Request : <?php class myController extends Controller{ public function myMethod(Request $request){ $request->validate($rules); } } حتى تتحصل على حرية أكبر ولا تترك الـ Laravel Exceptions يتولى إعادة التوجيه و تسجيل الأخطاء بالجلسة التي هي من المفروض خارج العملية فيما يخص بناء الAPI و باقي العملية. شكرا بجد ( الخلاصة التي استفدتها أن الموضوع من قبل فلاتر يتم ب: responce.StatusCode عندما تكون قيمته تساوي ب 422 )، لكن لم تنجح معي للأسف في فلاتر علما أني أستخدم حزمة Dio ومع العلم أيضا أن VS code يظهر لي أن Status code الذي حصل 422 لكن لم يستطع أن يقرأ الرد مع العمل أيضا أن الرد شغال وقمت بتحربته باستخدام Postman المشكلة باختصار / عدم تمكن فلاتر من قراءة الرد القادم من ال server اقتباس
0 Mohammed Abu Yousef نشر 23 أبريل 2021 الكاتب أرسل تقرير نشر 23 أبريل 2021 (معدل) @بلال زيادة باشا، تقريبا فهمت اللي بيحصل معايا الآن لما أبعت ال req بيجيلي ال res بتاع ال errors افتراضيا ب status code 422 وهادا ال status code مسجل في حزمة DIo انه ( DioErrorType (DioErrorType.response) ) ف عشان هيك التطبيق بيوقف أما لما أغير ال status code من ال API مثلا ل 201 بيشتغل مية مية. ف السؤال الآن / هل لما أغير ال status code بتعت الأخطاء من 422 ل 201 مثلا أو أي رقم تاني، بيأثر بشكل سلبي على اشي في التطبيق؟ ولو عايز أخلي الموضوع ماشي طبيعي ( أمشي على القيم الافتراضية )، فكيف أحل هادا الموضوع ( من فلاتر وليس من API )؟ تم التعديل في 23 أبريل 2021 بواسطة Mohammed Abu Yousef اقتباس
0 بلال زيادة نشر 23 أبريل 2021 أرسل تقرير نشر 23 أبريل 2021 بتاريخ 49 دقائق مضت قال Mohammed Abu Yousef: @بلال زيادة باشا، تقريبا فهمت اللي بيحصل معايا الآن لما أبعت ال req بيجيلي ال res بتاع ال errors افتراضيا ب status code 422 وهادا ال status code مسجل في حزمة DIo انه ( DioErrorType (DioErrorType.response) ) ف عشان هيك التطبيق بيوقف أما لما أغير ال status code من ال API مثلا ل 201 بيشتغل مية مية. ف السؤال الآن / هل لما أغير ال status code بتعت الأخطاء من 422 ل 201 مثلا أو أي رقم تاني، بيأثر بشكل سلبي على اشي في التطبيق؟ ولو عايز أخلي الموضوع ماشي طبيعي ( أمشي على القيم الافتراضية )، فكيف أحل هادا الموضوع ( من فلاتر وليس من API )؟ شوف لازم انتا في api ترجع قيمة الخطأ اذا 200 او 401 او اي قيمة تانيه بحيث اتناسب مع حالة الريكويست اي api ، طبعا تغيير القيمة يؤثر نوعا ما ولكن ممكن تغيرها بس الافضل ترجع كل حالة بقيمتها سواء 200 او غيرها افضل. 1 اقتباس
السؤال
Mohammed Abu Yousef
أريد عندما يقوم المستخدم سواء بعملية ( login / register )، وكان رقم الجوال مسجل في قاعدة البيانات، أن يقوم بإظهر رسالة مناسبة له.
ملاحظة / ال validation من جهة Laravel جاهز، ويقوم فعلا بإرجاع رسالة أنه يجب أن يكون unique
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.