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

Hafsa Aly

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

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

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

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

    4

أجوبة بواسطة Hafsa Aly

  1. بتاريخ 21 دقائق مضت قال Yomna Raouf:

    يوجد عدة طرق للقيام بذلك، منها استخدام paginator كما يلي:

    
    public function index()
        {
            $projects = auth()->user()->projects::paginate(2);
              return view('projects.index', compact('projects'));
        }

    نقوم بكتابة عدة السجلات التي نريد الحصول عليها كمعامل للتابع paginate

    في هذه الحالة سيحتوي المتغير على instance من الصنف Paginator، و سيتم تخزين البيانات الخاصة بك أسفل مفتاح key يسمى data، هذا في حالة ال JSON 

    
    {
       "total": 50,
       "per_page": 15,
       "current_page": 1,
       "last_page": 4,
       "first_page_url": "http://laravel.app?page=1",
       "last_page_url": "http://laravel.app?page=4",
       "next_page_url": "http://laravel.app?page=2",
       "prev_page_url": null,
       "path": "http://laravel.app",
       "from": 1,
       "to": 15,
       "data":[
            {
                // Record...
            },
            {
                // Record...
            }
       ]
    }

    أو يمكنك استخدام الطريقة التالية في النسخ الأقدم من laravel مثل laravel 5 مثلًا:

    
    public function index()
        {
            $projects = auth()->user()->projects::take(2)->get();
              return view('projects.index', compact('projects'));
        }

    و في النسخ الأحدث يمكنك استخدام الطريقة التالية:

    
    public function index()
        {
            $projects = auth()->user()->projects::all()->take(2);
              return view('projects.index', compact('projects'));
        }

     

    ولكن هنا لم يحدد اسماء الحقلين .. اقصد لم نحدد الحقلين الذي اود اختيارهما

  2. بتاريخ 20 دقائق مضت قال Adnane Kadri:

    يمكن تلخيص الية إنشاءها وفق الخطوات التالية , سنقوم بتعريف العلاقة كمثال بين النموذجين Category و Product : 

    1. بداية نحتاج إنشاء الجداول و النماذج المراد إنشاء العلاقة بينهما : 
      
      php artisan make:model Category -m
      php artisan make:model Product -m

       

    2. سنحتاج أيضا إنشاء جدول وسيط لتحقيق منطق العملية . بحيث يجب أن يتكون اسم الجدول الوسيط من أسماء فردية لكلا الجدولين ، مفصولة برموز شرطة سفلية ، ويجب ترتيب هذه الأسماء بترتيب أبجدي ، لذلك يجب أن يكون لدينا category_product ، وليس product_category :

      
      php artisan make:migration create_category_product_table

       

    3. بعد ذلك سنحتاج التأكد من تعريف الحقول اللازمة في ملف تهجير هذا الجدول الوسيط , بحيث يجب أن يمتلك حقلا أجنبيا يعبر عن عمود المعرف id في كلا الجدولين : products و categories :

    
    public function up()
        {
            Schema::create('category_product', function (Blueprint $table) {
                $table->increments('id');
                $table->integer('category_id')->unsigned();
                $table->integer('product_id')->unsigned();
            });
        }

       4. تنفيذ أمر التهجير : 

    
    php artisan migrate

       5. تعريف العلاقات في ملفات النماذج : 

    بداخل ملف النموذج Product.php :

    
    class Product extends Model
    {
        public function categories()
        {
            return $this->belongsToMany(Category::class);
        }
    }

    و أيضا بداخل ملف النموذج Category.php : 

    
    class Category extends Model
    {
        public function products()
        {
            return $this->belongsToMany(Product::class);
        }
    }

      6. ثم كخطوة أخيرة لن يكون علينا إلا احترام العلاقة عند إنشاء أي صفوف بقواعد البيانات و القراءة عن طريق العلاقتين products و categories .

    
    $productsOfXCategory = Category::find($ID)->products;
    
    
    $categoriesOfXProduct = Product::find($ID)->categories;

      

     

    شكرا لك ولكن لم افهم الخطوة السادسة

    • أعجبني 1
  3. بتاريخ On 6/17/2021 at 19:54 قال عبود سمير:

    الأمر بسيط فقط قومي بإتباع بعض الخطوات سأشرحها لك بإستخدام مثال: سنُضيف لإستمارة التسجيل نوع المُستخدم gender:

    نُضيف الحقل gender إلى جدول المستخدمين:

    أولا نُنشئ ملف تهجير لإضافة الحقل:

    
    php artisan make:migration add_gender_to_users

    نفتح ملف التهجير و نضيف الحقل للتابع up:

    
    $table->enum('gender', ['male', 'female', 'others'])->default('male');

    و في التابع down نُضيف:

    
    $table->dropColumn('gender');

    نقوم بتنفيذ أمر التهجير:

    
    php artisan migrate

    نضيف الحقل لإستمارة تسجيل الدخول في الملف register.blade:

    
    <div class="form-group row">
      <label for="gender" class="col-md-4 col-form-label text-md-right">{{ __('Gender') }}</label>
    
      <div class="col-md-6">
        <select class="form-control @error('gender') is-invalid @enderror" name="gender" id="gender" required>
          <option value="">Select Your Gender</option>
          <option value="male" {{ old('gender') == 'male' ? 'selected' : '' }}>Male</option>
          <option value="female" {{ old('gender') == 'female' ? 'selected' : '' }}>Female</option>
          <option value="others" {{ old('gender') == 'others' ? 'selected' : '' }}>Others</option>
        </select>
        @error('gender')
        <span class="invalid-feedback" role="alert">
          <strong>{{ $message }}</strong>
        </span>
        @enderror
      </div>
    </div>

    نضيف الحقل gender لمصفوفة fillable في النموذج:

    
    protected $fillable = [
      'name', 'email', 'password', 'gender'
    ];

    بعد ذلك نتحقق من الحقل في المتحكم RegisterController و نضيف الحقل في إنشاء السجل:

    
    'gender' => ['required', 'string', 'in:male,female,others'],

    و في الإنشاء:

    
    protected function create(array $data)
    {
      return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'gender' => $data['gender'], // إضافة الحقل
        'password' => Hash::make($data['password']),
      ]);
    }

    و هكذا بنفس الطريقة يُمكنك إضافة حقول أخرى.

    شكرا لك . عندي سؤال اخر  في نفس الموضوع اريد اضافة checkbox  في ال registeration form  لاختيار هوايات مع انني اريد معرفة اذا تم اختيار اكثر من هواية كيف يتم حفظها في الdb  ايضا

  4. namespace App\Http\Controllers;
    use App\Models\User;
    use Illuminate\Support\Facades\Hash;
    use Illuminate\Http\Request;
    
    class UsersController extends Controller
    {
    public function store(){
                $user = new User;
                $user->name = request('name');
                $user->email = request('email');
                $user->password = request('pass');
                $user->save();
                return redirect('/users');
            }
    }

    اريد هنا عند ادخل مستخدم جديد ان يتم عمل hashing لل password الخاص به فكيف؟

  5. بتاريخ الآن قال بلال زيادة:

    يمكن تكرار الاستعلام مرة داخل controller الخاص ب admin panel و مرة في الcontroller الخاص بالموقع. يجوز تكرار نفس الاستعلام داخل أي controller تريدين.

    انا اود تكرار نفس الاستعلام في نفس ال controller بهذا الشكل فهل هو صحيح

    public function index(){
            $blog_list = Blog::all();
            return view('front.blog', compact('blog_list'));
            return view('back.blog.index', compact('blog_list'));
    
        }

     

    بتاريخ 18 دقائق مضت قال Hafsa Aly:

    انا اود تكرار نفس الاستعلام في نفس ال controller بهذا الشكل فهل هو صحيح

    
    public function index(){
            $blog_list = Blog::all();
            return view('front.blog', compact('blog_list'));
            return view('back.blog.index', compact('blog_list'));
    
        }

     

    هل الكود صحيح

    • أعجبني 1
  6. بتاريخ 42 دقائق مضت قال Wael Aljamal:

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

    انا لدي تابع داخل داخل controller سيقوم بارجاع نفس البيانات  وهذه البيانات اود عرضها مرة  البيانات داخل view خاصه بالموقع مرة  ومرة اخرى اود عرضها في view خاصه بجزء الadmin panel   

  7. بتاريخ منذ ساعة مضت قال بلال زيادة:

    يمكنك صنع مجلد جديد داخل المسار التالي app\Http\Controllers وليكن Admin و من ثم في هذا المجلد نخزن أي controller خاص بالادمن أو عن طريق الأمر التالي نستطيع تخزين الcontroller في أي مجلد نريده 

    
    php artisan make:controller Admin\PostsController --resource

    لو لاحظتي جيدا أننا قمنا بتوجيه تخزين الcontroller إلى المجلد Admin كما في الأمر إعلاه. 

    طبعا لوحة التحكم ستكون مختلفة التصميم و الأوامر عن تصميم الموقع فينصح بفصل controllers الخاصة بالموقع عن لوحة التحكم , أيضا نادراُ ما يتم استخدام نفس الcontroller لكل من اللوحة أو الموقع. 

    و أيضا يمكن في ملف web.php الخاص ب routes تمييز لكل من اللوحة و الموقع عن طريق Route::group ففي المثال التي حددنا مسارات لوحة التحكم داخل Route::group

    
    Route::group(['prefix' => 'admin', 'as' => 'admin.'], function () {
        Route::get('/login', 'Admin\Auth\LoginController@showLoginForm')->name('adminlogin');
        Route::post('/login', 'Admin\Auth\LoginController@login')->name('adminloginsubmit');
        Route::get('/logout', 'Admin\Auth\LoginController@logout')->name('adminlogout');
        Route::post('/logout', 'Admin\Auth\LoginController@logout')->name('adminlogout');
    });

    كلما كانت طريقة تنظيم المشروع ممتازة وجيدة فيسهل مستقبلا التطوير على المشروع و أيضا هذا قد يساعدكي في مشروعات أخرى من الأستفادة من العناصر المشتركة في مشاريع مستقبلية.

    public function show($id){
            $blog_item = Blog::find($id);
            return view('front.blog-post','back.blog.edit',compact('blog_item'));
        }
    في حال اذا اردت  عرض هذه البانات على 
    اولا view  خاصه بال backend
    وثانيا  ايضا نفس البيانات اود عرضها على front view
    فكيف اكتبها

     

    public function show($id){
            $blog_item = Blog::find($id);
            return view('front.blog-post','back.blog.edit',compact('blog_item'));
        }
    في حال اذا اردت  عرض هذه البانات على 
    اولا view  خاصه بال backend
    وثانيا  ايضا نفس البيانات اود عرضها على front view
    فكيف اكتبها

     

  8. السلام عليكم

    عند بدء عمل admin panel للمشروع اين انشئ الcontrollers  الخاصه بال routes مع العلم انني اعمل على اصدار laravel7

    هل انشئ لها controller جديده غير الcontroller  الخاصه بجزء الfront  في مجلد controller

    • أعجبني 2
  9. بتاريخ 1 ساعة قال Ali Taha2:

    تداعيات المشكلة كثيرة والمعلومات المقدمة من قبلك قليلة  , ولكن لعل أبرز تشخيص هو أن  الملفات الخاصة بمشروعك ليست بكاملة ,لذا يمكنك الاستعانة بال composer  في المسار الخاص بمشروعك يمكنك تنفيذ التعليمة التالية :

    
    composer install

    ومن ثم تجربة التعليمة 

    
    php artisan serve

    أما بخصوص التعليمة 

    
    php -S localhost:8000 -t public/

    يمكنك مراجعة هذا الجزء من ال Documentation الخاص بالphp 

    https://www.php.net/manual/en/features.commandline.webserver.php

    اي ملف معين في المشروع تريد مراجعته ؟ وسوف ارسله اليك

    • أعجبني 1
  10. بتاريخ 42 دقائق مضت قال بلال زيادة:

    صحيح , لاحظت هو عدم وجود متغير about وهو مسبب المشكلة ممكن ترفقي اول جزء من الملف هنا أو التأكد من متغير about في ملف FrontController.php

    تم حل امشكلة شكرا جزيلا لك

    بتاريخ 15 دقائق مضت قال Ali Taha2:

     يمكنك تجربة الحلول التالية :

    أولاً:

    تأكدي من سلامة تثبيت ال php على جهازك ..

    وذلك بالضغط على ايقونة الويندوز + المحرف R 

    ومن ثم يظهر موجه الأوامر  

    نكتب الأمر 

    
    php -v 

    في حال ظهور الإصدار عندها تكون ال php مثبتة بشكل سليم على جهازك وننتقل للمرحلة الثانية ..

     

    php.PNG.f20587e4cf7c316201a0711d4db5e860.PNG

     

    ثانياً:

    في المسار الخاص بالمشروع نكتب cmd في مستكشف الملفات ومن بعدها نضغط Enter , حيث تفتح نافذه موجه الأوامر في المسار الخاص بمشروعك .

    cmd.thumb.PNG.a5704e9c92f9a085046c2b448a0cdc8b.PNG

     

    ثالثاً :

    عند ظهور نافذة موجه الأوامر .. يمكنك كتابة التعليمة التالية وبعدها الذهاب إلى المسار المحدد بالأحمر :

    
    php -S localhost:8000 -t public/

    0gfg.thumb.PNG.62ca375973af75d42f6d56145c9a98ec.PNG

    نفذت ماكتبته لي وتم حلها شكرا لك ولكن اريد ان افهم لماذا كتبنا هذا الامر ولما حدثت المشكله من البدايه

    بتاريخ 9 دقائق مضت قال Hafsa Aly:

    تم حل امشكلة شكرا جزيلا لك

    نفذت ماكتبته لي وتم حلها شكرا لك ولكن اريد ان افهم لماذا كتبنا هذا الامر ولما حدثت المشكله من البدايه

    ارجو الاجابة على سؤالي حتى لاتتكرر معي المشكله وشكرا

    • أعجبني 2
  11. بتاريخ 13 دقائق مضت قال بلال زيادة:

    ممكن تشوفي المسار التالي  storage\logs وفحص مشاكل logs ستجدين عدة ملفات كل ملف مسمى بتاريخ اليوم إذا حصلت المشكلة اليوم سوف تجدين ملف بتاريخ اليوم ممكن تشوفي المشكلة المسببة لذلك أو وضع المشكلة هنا لنساعدك بها. 

    VID20210215134213.mp4

    • أعجبني 1
  12. بتاريخ 4 دقائق مضت قال عبود سمير:

    قد تلاحظين أن في laravel هناك عدة طرق للوصول إلى ما نريد، لذلك في هذه الحالة لا يوجد فرق، whereIn تُستخدم لإنشاء الإستعلام الذي نريده و get هي التي تقوم بتطبيق الإستعلام و إرجاع النتائج، بعكس find التي تقوم بالإثنين معاً، أحياناً قد لا نريد جلب السجلات بل نريد حذفها مثلاً او إجراء عملية أخرى و في هذه الحالة لن تُساعدنا find، يُمكن إستخدامها لكن سنقوم في هذه الحالة بإجراء إستعلامات زائدة لا داعي لها. فإذا كنا نريد الحذف لماذا نجلب البيانات ما دُمنا نستطيع حذفها مُباشرة:

    
    Model::whereIn('id', [1, 2])->delete();

     

    فهمت شكرا لك وعندي سؤال اخر هو كيف اجلب جميع سجلات جدول ولكن من اخر سجل الى اول سجل

  13. بتاريخ 33 دقائق مضت قال عبود سمير:

    لجلب سجلات مُحددة عن طريق id النموذج مثلاً 1، 4، و 9 نقوم بإستعمال التابع find على الmodel و تمرير مصفوفة تضم المُعرفات التي نريد جلب سجلاتها:

    
    Model::find([1, 4, 9]);

    أي أننا إن أردنا جلب المُستخدم الأول و الثاني يُمكننا إستخدام:

    
    User::find([1, 2]);

    أما إن كنا نريد جلب سجلين عشوائيين يُمكن إستخدام هذه الطريق:

    
    Model::inRandomOrder()->limit(2)->get();

    الفرق بين first و get أن first يجلب أول سجل يُطابق الإستعلام، أما get تجلب كل السجلات التي تُطابق الإستعلام على شكل collection، مجموعة سجلات

    هل يوجد فرق بينها وبين هذه الطريقه 

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Slide;
    use App\About;
    
    
    class HomeController extends Controller {
    
      public function homepage(){
          $slides = Slide::all();
          $about = About::whereIn('id', [1,2])->get();
          return view ('front.homepage', compact('slides','about'));
    	}
    }

     

×
×
  • أضف...