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

بلال زيادة

الأعضاء
  • المساهمات

    4376
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    30

كل منشورات العضو بلال زيادة

  1. ما فهمته أنه تريد عمل تحويل من الموقع القديم عند الضغط على أي عنصر في menu يتم تحويلك إلى الموقع الجديد, هل فهمت السؤال بشكلٍ خاطىء , أرجوا توضيح السؤال بشكل أكبر ؟
  2. يمكنك إعادة التحويل باستخدام وسم meta في html <meta http-equiv="refresh" content="30; url='index.html'"> أو باستخدام دالة header في php و هذه الدالة تستخدم لإعادة التوجيه بين الصفحات أو حتى بين المواقع بهذا الشكل header("Location: هنا الرابط أو الصفحة المقصودة"); <?php header("Location: index.php"); ?>
  3. يمكنك إضافة أي widget داخل Widget Stack بحيث تقوم باستخدام خاصية Positioned.directional(), للتحكم في إتجاه النص بداخل هذا widget باستخدام خاصية textDirection:Directionality.of(context), بحيث إذا كانت اللغة تبدأ من اليمين إلى اليسار , يتغير إتجاه النص من اليمين إلى اليسار , و من ثم إذا كانت اللغة تبدأ من اليسار إلى اليمين يتم تغيير إتجاه النص بناءً على ذلك . Stack( children: [ Image.asset( kSettingsImage, fit: BoxFit.cover, height: MediaQuery.of(context).size.height / 3, ), Positioned.directional( textDirection:Directionality.of(context), child: Text( '${S.of(context).settings}', style: TextStyle( color: Colors.white, fontWeight: FontWeight.bold, fontSize: 30.0, ), ), bottom: 10.0, start: 20.0, ), ], ), أو يمكنك استخدام Widget Builder بحيث يمكنك ايضا من تغيير إتجاه الواجهة من خلال خاصية Directionality() builder: (context, child) { return Directionality( textDirection: TextDirection.rtl, child: child, ); },
  4. لاحظ في التنسيق التالي أنك أخطأت في كتابته thead td {font-weight:ext-align:center;color:#00F} فيجب أن تعطي قيمة لخاصية font-weight , و ايضا يجب كتابة اسم الخاصية بشكل صحيح في text-align فيكون التنسيق بهذا الشكل thead td { font-weight:bold; text-align:center; color:#00F; } ثم لاحظ جيداً أنه لا يوجد وسم thead, tfoot في جدولك لذلك يجب عليك وضعها لتعمل التنسيقات أو إزالتها لتكون التنسيقات بهذا الشكل table td { font-weight: bold; text-align:center; } table td { font-weight:bold; text-align:center; color:#00F; } أو بإضافة tfoot, thead تكون التنسيقات tfoot td { font-weight: bold; text-align:center; } thead td { font-weight:bold; text-align:center; color:#00F; } فيكون كامل الكود الخاص بالجدول <table> <caption>This is Our Hosting Plan</caption> <thead> <tr> <td font-weight: bold;text-align:center;color:#00F>plan0</td> <td>plan1</td> <td>plan2</td> <td>plan3</td> <td>plan4</td> </tr> </thead> <tfoot> <tr> <td>HradDisk20GB</td> <td>HradDisk40GB</td> <td>HradDisk60GB</td> <td>HradDisk80GB</td> <td>HradDisk90GB</td> </tr> <tr> <td>5Databass</td> <td>6Databass</td> <td>4Databass</td> <td>3Databass</td> <td>2Databass</td> </tr> <tr> <td>3Ftp</td> <td>4Ftp</td> <td>5Ftp</td> <td>6Ftp</td> <td>7Ftp</td> </tr> <tr> <td>50$</td> <td>60$</td> <td>70$</td> <td>80$</td> <td>90$</td> </tr> </tfoot> </table>
  5. هل يمكنك توضيح المشكلة بشكل أكبر , حتى أتمكن من مساعدتك بشكل أفضل؟
  6. يمكنك فتح تذكرة دعم فني من هنا , وأخبار الدعم الفني بذلك و سيعملون على حل مشكلتك بأسرع وقت ممكن.
  7. كما ذكر المدرب عبود , فأن حلقة التكرار تقوم بتنفيذ الكود و طباعة الأرقام أو طباعة ما بداخل الحلقة وصولاً للشرط إذا تحقق الشرط فإن حلقى التكرار تقوم بطباعة النص بداخل الشرط المنفذ, حيث يمكنك استخدام php في تنفيذ هذه الفكرة فمثلاً يمكن استخدام for بهذا الشكل <?php for($i = 0; $i <= 10; $i++) { echo $i . "<br />"; if($i == 10) echo "الصلاة و السلام على سيدنا محمد"; } فتكون نتيجة الكود السابق 0 1 2 3 4 5 6 7 8 9 10 الصلاة و السلام على سيدنا محمد أو أيضا يمكنك استخدام أي حلقة تكرار مثل while <?php $i = 0; while($i <= 10) { echo $i . "<br />"; if($i == 10) echo "الصلاة و السلام على سيدنا محمد"; $i++; } ايضا ستكون النتجة مشابهة لنتيجة الكود السابق , ايضا يمكنك استخدام do while <?php $i = 0; do { echo $i . "<br />"; if($i == 10) echo "الصلاة و السلام على سيدنا محمد"; $i++; } while($i <= 10); الفكرة العامة هي أن تكون فاهم أساسيات كل لغة برمجية تريد تنفيذ الكود الخاص بك بها , وفهم حلقات التكرار ويمكنك تنفيذ ما تريد.
  8. يمكنك استخدام متصفح ثاني غير الذي تستخدمه ومن ثم محاولة تشغيل فيديوهات الدورة مرة أخرى , أيضا يمكنك فتح تذكرة دعم فني من هنا , عن طريق اختيار أكاديمية حسوب ومن ثم سيعملون على حل مشكلتك باسرع وقت.
  9. بعدما تقوم بإنشاء جدول teachers يجب عليك القيام ببعض الخطوات و هي كالتالي : إنشاء مودل خاص بهذا الجدول وليكن باسم مثلاً Teacher.php ويمكن إنشاء المودل عن طريق الأمر التالي php artisan make:model Teacher ومن ثم تقوم بفتح هذا الملف و إضافة له guard الذي سيكون خاص به عن طريق إضافة السطر التالي إلى الملف protected $guard = "teacher"; مع إضافة مصفوفة fillable$ للحقول الذي تنتمي لهذا الجدول protected $fillable = ['name', 'email', 'password']; ثم تقوم بإنشاء guard جديد لهذا الجدول وليكن اسمه teacher عن طريق الدخول إلى الملف التالي config\auth.php وبداخل مصفوفة guards نضيف guard الجديد 'teacher' => [ 'driver' => 'session', 'provider' => 'teachers', ], ثم في نفس الملف في مصفوفة providers نقوم بإضافة provider جديد 'teachers' => [ 'driver' => 'eloquent', 'model' => App\Teacher::class, ], ثم يمكنك إنشاء متحكم جديد وليكن مثلاً باسم TeacherController.php عن طريق الأمر التالي php artisan make:controller Auth\TeacherController نقوم بفتح هذا الملف و من ثم إضافة عملية تسجيل الدخول إليه عن طريق الكود التالي ,بحيث نقوم بإضافة guard الذي نود أن يكون مسؤول عن عملية تسجيل الدخول Auth::guard('teacher')->attempt(['email' => $request->email, 'password' => $request->password]);
  10. flutter inspector: يعد فاحص أدوات flutter أداة قوية لتصوير و استكشاف أشجار عناصر واجهة flutter. يستخدم إطار عمل flutter عناصر واجهة المستخدم باعتبارها اللبنة الأساسية لأي شيء بدءاً من عناصر التحكم مثل النصوص و الأزرار و المفاتيح , إلى عناصر التخطيط و هي Center, Column, Padding, Rows , يساعدك المراقب ( flutter inspector ) على استكشاف هذه العناصر والعمل على فهم المخطط الخاص بواجهة المستخدم أو تشخيص المشكلات التي تكون في تخطيط الصفحة. يلجأ الكثير من المبرمجين إلى استخدام هذه الأداة لحل المشكلات التي قد تكون في الواجهة مما يوفر عليه عدم مراجعة كود تخطيط الصفحة من البداية وعدم اللجوء إلى تبديل عناصر قد تكون المشكلة بسبب عناصر أخرى غيرها. flutter Emulator: هو محاكي مثل أجهزة الموبايل android على نظام الكمبيوتر الخاص بك , بحيث يتيح لك تجربة تطبيقاتك عليه , ايضا يزود المحاكي المستخدم بعدة أجهزة ليتيح تجربة التطبيق على أكثر من جهاز موبايل بمختلف الإصدارات. يوفر هذا المحاكي عدة أمكانيات شبيهة بنظام الجوال, مثل محاكاة المكالمات الهاتفية و الرسائل الواردة و الصادرة , تحديد موقع الجهاز, أجهزة الاستشعار الأخرى, الوصول إلى متجر قوقل بلاي وغير ذلك الكثير, يعد أختبار تطبيقك على المحاكي اسرع و اسهل من أختباره على جهاز موبايل حقيقي.
  11. يمكنك فتح الصورة من خلال الرسالة بالطريقة التالية: قم بالضغط على الصورة بالزر الأيمن للماوس. بعد الضغط على الصورة قم باختيار تحرير. ثم من سيفتح معك الرسام , قم بالضغط على تغيير الحجم. ثم قم بوضع ارتفاع و عرض مناسبين للصورة وليكن مثلاً 1000 بكسل لكليهما. ومن ثم حاول مجدداً تحديث الصفحة و ملاحظة الفرق الحاصل بعد تغيير حجم الصورة .
  12. السبب هو حجم الصورة الكبير , لذلك يعطي تأخر بسيط في ظهور الصورة , ولكن لا مشكلة في ذلك. يمكنك تقليل على حجم الصورة و من ثم محاولة تجربة تحميل الصفحة مرة أخرى.
  13. من الممكن أن يكون بسبب حجم الصورة إذا كان كبير جداً , ايضا ممكن أن يكون بسبب الكاش المخزن ( الملفات المؤقتة ) ويجب حذف هذا الكاش بالضغط على ctrl+f5 في لوحة المفاتيح, حاول رجاء فعل ذلك , و إذا لم ينجح الأمر حاول إرفاق صورة من الصفحة التي توجد بها المشكلة .
  14. يمكنك استخدام Widgets SizedBox() , Expanded() بحيث تقوم بإضافة الزر داخل إحدى هذه Widgets بهذا الشكل Expanded( child: TextButton( child: Text("Lang"), onPressed: (){} ), ) أو SizedBox( child: TextButton( child: Text("Lang"), onPressed: (){} ), )
  15. يمكنك إنشاء حقل باسم isAdmin و قيمته تكون أما 0 أي عضو , 1 أدمن , مدير, في جدول users $table->integer('isAdmin')->default(0); ومن ثم إنشاء Seeder لإضافة يوزر افتراضي للموقع عن طريق تنفيذ الأمر التالي php artisan make:seeder UserSeeder ثم تقوم بفتح هذا الملف من خلال المسار التالي database\seeds ومن ثم تقوم بإضافة بيانات اختبارية أو اليوزر الذي تود إنشائه عن تثبيت المشروع الخاص بك داخل ملف UserSeeder $user = \App\User::create([ 'name' => 'user', 'email' => 'user@user.com', 'password' => Hash::make('123123123'), 'phone' => '', 'isAdmin' => 1, ]); وتعطيه قيمة حقل isAdmin = 1 , ومن ثم تقوم بإنشاء ملف Controller لإضافة مستخدمين عن طريق الأمر التالي php artisan make:controller Admin\UsersController --resource ومن ثم بداخل هذا الملف نقوم بكتابة أكواد إضافة مستخدمين و تعديل مستخدم و حذف مستخدم فيمكن إضافة مستحدمين عن طريق الكود التالي /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $countries = Country::all(); return view('admin.users.create', compact('countries')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $users = new User(); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; $users->password = \Hash::make($request->password); if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_add')); return redirect()->route('users.index'); } وكامل الملف يكون <?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\User; use Illuminate\Support\Facades\Hash; use Str; class UsersController extends Controller { /** * Create a new controller instance. * * @return void */ public function __construct() { } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index(UsersDataTable $users) { return view('admin.users.index'); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('admin.users.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); $users = new User(); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; $users->password = \Hash::make($request->password); if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_add')); return redirect()->route('users.index'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show(Request $request, $id) { $user = User::find($id); if(! $request->ajax()){ return view('admin.users.show', compact('user')); }else{ return view('admin.users.modal.show', compact('user')); } } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $user = User::find($id); $users = User::all(); return view('admin.users.edit', compact('user', 'users')); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $request->validate([ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email,' . $id], ]); $users = User::find($id); $users->name = $request->name; $users->email = $request->email; $users->phone = $request->phone; if($request->hasFile('image')){ $img = time() . '.' . $request->file('image')->getClientOriginalExtension(); $users->image = $img; $request->image->move(public_path('assets/users_img'), $img); } $users->save(); \Session::flash('alert-success', trans('lang.success_update')); return redirect()->route('users.index'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $user = User::find($id)->delete(); \Session::flash('alert-success', trans('lang.success_delete')); return redirect()->route('users.index'); } } ثم تقوم بإنشاء middleware للتحكم بالأعضاء للسماح لهم بالدخول إلى الملف أو لا عن طريق الأمر التالي php artisan make:middleware IsAdmin ثم نتوجه إلى المسار التالي لفتح الملف IsAdmin.php app\Http\Middleware ونقوم بوضع شرط معين إذا كان العضو الذي يريد الدخول إلى الصفحة قيمة الحقل isAdmin تساوي 1 يمكنه الدخول إلى هذه الصفحة public function handle($request, Closure $next) { if (auth()->guard('web')->user()->isAdmin == 1) { return $next($request); } else { return redirect('/404'); } //return $next($request); } فيكون كامل الملف <?php namespace App\Http\Middleware; use Closure; class IsAdmin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (auth()->guard('web')->user()->isAdmin == 1) { return $next($request); } else { return redirect('/404'); } //return $next($request); } } ثم نقوم بإضافة هذا Middleware الذي قمنا بإنشائه إلى ملف Kernel.php داخل المسار التالي app\Http إلى مصفوفة $routeMiddleware = []; بهذه الطريقة 'admin' => \App\Http\Middleware\IsAdmin::class, ثم نقوم بفتح ملف web.php و إضافة المسار إلى هذا الملف ويكون المسار Route::group(['middleware' => ['auth:admins'], 'prefix' => 'admin'], function(){ Route::resource('users', 'Admin\UsersController'); });
  16. صحيح ,لأنه تم فقط إضافة بيانات اختبارية فقط لجدول users. يمكنك إضافة بيانات اختبارية لباقي الجداول كيفما تريد.
  17. هل من الممكن تتفقد جدول users بأنه يوجد به حسابات للمستخدمين ؟
  18. تم الأمر و لكن لا يبدو أن لديك ملفات أختبارية تم إنشائها أو تم وضعها في ملف DatabaseSeeder..php .
  19. رجاءًا حاول إعادة تشغيل السيرفر من جديد, أو حاول الدخول إلى ملف laravel.log في مجلد storage و قراءة أي أخطاء قد تسبب هذا الأمر , ايضا حاول تنفيذ الأمر التالي php artisan migrate --force ثم محاولة تنفيذ الأمر التالي php artisan migrate:fresh --seed ليتم إضافة البيانات الأختبارية بعد تهجير الجداول إلى قاعدة البيانات. أرجوا إخباري بالنتيجة.
  20. حاول معرفة أي إصدار bootstrap تستخدمه ومن ثم قم بوضع pagination::bootstrap-4 مع تغيير إصدار البوتستراب {{$questions->links('pagination::bootstrap-4')}} إذا لم يكن مجلد vendor داخل مجلد views فيمكنك استخدام الأمر التالي لتقوم بنشره داخل مجلد views php artisan vendor:publish --tag=laravel-pagination ومن ثم يمكنك تخصيص ملف ترقيم الصفحات بوضع أي استايل تريده عن طريق وضع الملف الجديد {{$questions->links('myfile')}}
  21. يمكنك إنشاء استعلام يمكنك من خلاله جلب بيانات التصنيف بهذه الطريقة $sql = mysqli_query($connection, "SELECT * FROM category WHERE id = $category_id"); هذا استعلام عادي في PHP أو من خلال laravel يمكنك إنشاء علاقة بين جدول posts , categorys بحيث كل تصنيف لديه عدة منشورات و تكون العلاقة في ملفي Model الخاص بالجدولين و لنفرض أن جدول posts لديه ملف Post.php و جدول categories لديه ملف Category.php فالعلاقة ستكون باسم hasMany أي كل تصنيف يملك أكثر من منشور و في ملف Category.php يمكنك إضافة العلاقة التالية public function posts(){ return $this->hasMany(Post::class); } وملف Post.php يحتوي على التالي public function category(){ return $this->belongsTo(Category::class); } وخلال الاستعلام يمكنك جلب هذه العلاقة بهذه الطريقة $posts = Post::with('category')->get(); أي قمنا من خلال with جلب العلاقة category و يمكنك جلب أكثر من علاقة بهذا الشكل $posts = Post::with('category', 'اسم العلاقة الثانية')->get(); و من ثم يمكنك إنشاء حلقة تكرار بحيث تقوم بجلب المنشورات ومن خلال العلاقة category يمكنك الوصول إلى بيانات جدول categories بهذا الشكل @foreach($posts->category() as $category) <h3>{{ $category->name ?? '' }}</h3> @endforeach
  22. باستخدام replaceOne يمكنك فقط استبدال المستند بأكمله, بينما updateOne تقوم بتحديث الحقول في المستند. ايضا باستخدام replaceOne ستفقد الحقول الموجودة في المستند القديم غير الموجودة في المستند الجديد. باستخدام updateOne يمكن إضافة حقول جديدة دون فقدان الحقول الموجودة في المستند القديم . هذه أمثلة توضح الفرق باستخدام replaceOne , updateOne . { "id": ObjectId("123"), "code": 123 } باستخدام replaceOne بهذه الطريقة replaceOne({ "id": ObjectId("123")}, {"code2": 321}); تكون نتيجة الكود كالتالي { "id": ObjectId("123"), "code2": 321 } بينما باستخدام updateOne updateOne({ "id": ObjectId("123"), }, {$set: {"code2": 321}}) تكون نتيجة الكود { "id": ObjectId("123"), "code": 123, "code2": 321 }
  23. يمكنك إضافة ما يلي إلى ملف التكوين المقدم عند تشغيل mongod --config mongod.conf لآخر إصدار من MongoDB storage: mmapv1: smallFiles:true لإصدار 2.6 storage: smallFiles:true لإصدار 2.4 و الإصدارات التي أقل : smallFiles:true ثم قم فقط بتنفيذ mongod لقبول ملف التكوين الخاص بك , ويفترض أن يكون موقع ملف التكوين هو /etc/mongodb.conf أو يمكنك تشغيل mongod باستخدام الأمر التالي mongod --dbpath /data/db --smallfiles
  24. هل يمكنك وضع صورة للخطأ أو نص للخطأ الذي يظهر ؟, أو تأكد إسناد قيمة في خاصية value في وسم option بهذا الشكل <select name="food"> <option value="0">الأختيار الأفتراضي</option> @foreach ($items as $item) @if ($loop->last) @isset($selected) <option value="{{$item->id ?? ''}}">{{$selected}}</option> @endisset @endif @endforeach </select> بحيث تقوم بوضع خارج loop وسم option افتراضي وتسند له قيمة معينة و في داخل loop يمكنك تنفيذ كود جلب البيانات , و من ثم إزالة خاصية selected حتى لا يحدث خطأ في عملية أختيار option الافتراضي, و في طبيعة الحال يقوم وسم select باختيار أول option كخيار افتراضي في حالة عدم تحديد أي option كخيار افتراضي عبر خاصية selected.
  25. علامة النسبة المئوية هي شائعة في العديد من لغات البرمجة, ليس فقط في Python , يحدد الباقي عند القسمة على رقمين , لذا في المثال يتم التحقق من الأرقام الزوجية إذا قسمت على 2, فإن الباقي يساوي 0 , فهو عدد زوجي . if i%2==0: تتحقق مما إذا كان الرقم زوجياً. for i in range(1, 101): if i%2==0: print(i) ونتيجة هذا الكود هي 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
×
×
  • أضف...