رفتن به مطلب
انجمن پشتیبانی لاراول ایران

هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست

Paradox

کاربر
  • تعداد ارسال ها

    112
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    1

پست ارسال شده توسط Paradox


  1. سلام شب بخیر من اطلاعات استان و شهر و منطقه رو موقع ثبت نام از کاربر میخام که از طریق ایجکس اطلاعات رو از دیتابیس دریافت میکنم که تا اینجا اکیه
    حالا میخام تو پنل مدیریت بتونم مناطق شهرهارو غیرفعال یا فعال کنم مثلا اگه شهر تهران انتخاب شد بتونم تمام مناطقش رو فعال و غیرفعال کنم
    برای این چون با ایجکس هست به مشکل خوردم و نتو نستم انجام بدم

    الان تمام منطقه هارو نمایش میده چجوری دکمه فعال و غیرفعال رو بزارم که تمام مناطق یک شهر رو در بر بگیره؟

    دیتابیس منطقه

    Schema::create('regions', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->tinyInteger('status')->default(1);
                $table->foreignId('city_id')->constrained()->cascadeOnDelete();
                $table->timestamps();
            });

     

    روت

      Route::get('/locations' , [AdminController::class , 'showLocation'])->name('locations');
        Route::post('/locations/fetch-cities' , [AdminController::class , 'fetchCity']);
        Route::post('/locations/fetch-regions' , [AdminController::class , 'fetchRegion']);
        Route::post('/locations' , [AdminController::class , 'submitLocation'])->name('send.locations');
     
        Route::get('locations/status/{location}', [AdminController::class ,'updatestatus'])->name('location.status');

     

    کنترلر

    public function showLocation()
        {
            $provinces = $data['province'] = Province::get(["name", "id"]);
            // $regions = Region::get();
            return view('admin.locations.location' , compact('provinces'));
        }
     
        public function fetchCity(Request $request)
        {
            $data['cities'] = City::where("province_id", $request->province_id)
            ->get(["name", "id"]);
     
            return response()->json($data);
        }
     
        public function fetchRegion(Request $request)
        {
            $data['regions'] = Region::where("city_id", $request->city_id)
            ->get(["name", "id"]);
     
            return response()->json($data);
        }
     
        public function submitLocation(Request $request , Region $region)
        {
            $request->validate([
                'province' => 'required',
                'city' => 'required',
                'region' => 'required',
            ]);
     
            if (Region::where('city_id', $request->city)->count() > 0)
            {
                if ($request->region[0] == 'status') {
                    $region = Region::where('city_id', $request->city)->get();
     
                } else {
                    alert("لطفا یک گزینه را انتخاب کنید");
                }
     
            } else {
                return redirect(route('locations'));
            }
     
            return redirect(route('locations'));
     
        }
     
        public function updatestatus(Region $region)
        {
            if ($region->status == 1) {
                $region->status = 0;
            } else {
                $region->status = 1;
            }
     
            $region->save();
            alert()->success('به روز رسانی با موفقیت انجام شد' , 'با تشکر');
     
            return redirect(route('regions'));
        }

     

    ایجکس

    $(document).ready(function () {
     
            $('#province-dropdown').on('change', function () {
                var idProvince = this.value;
                $("#city-dropdown").html('');
                $.ajax({
                    url: "{{url('admin/locations/fetch-cities')}}",
                    type: "POST",
                    data: {
                        province_id: idProvince,
                        _token: '{{csrf_token()}}'
                    },
                    dataType: 'json',
                    success: function (result) {
                        $('#city-dropdown').html('<option value=""> انتخاب شهر </option>');
                        $.each(result.cities, function (key, value) {
                            $("#city-dropdown").append('<option value="' + value
                                .id + '">' + value.name + '</option>');
                        });
                        $('#region-dropdown').html('<option value="">انتخاب منطقه</option>');
                    }
                });
            });
          $('#city-dropdown').on('change', function () {
                var idCity = this.value;
                $("#region-dropdown").html('');
                $.ajax({
                    url: "{{url('admin/locations/fetch-regions')}}",
                    type: "POST",
                    data: {
                        city_id: idCity,
                        _token: '{{csrf_token()}}'
                    },
                    dataType: 'json',
                    success: function (res) {
                        $('#region-dropdown').html('<option value="status">غیرفعال</option>');
                        $.each(res.regions, function (key, value) {
                            $("#region-dropdown").append('<option value="' + value
                                .id + '">' + value.name + '</option>');
                        });
                    }
                });
            });
     
        });

     


  2. سلام وقت بخیر
    من میخام کاربران مورد علاقه به سایت اضافه کنم باید از روش morph استفاده کرد درسته ؟
    من هرچی سرچ زدم لایک و علاقه مندی برای پست و مقالات بود
    من میخام برای کاربران باشه یعنی از بین کاربران اونایی که مورد علاقه هستند لایک و دیسلایک اضافه کنم
    این لینک هایی که گذاشتم ایا مثل این انجام بدم و جدول post در نظر نگیرم میتونم به جواب برسم یا متفاوت هست ؟
    لینک
    و این لینک


  3. برای نمایش منطقه به این شکل نوشتم تو بلید

    auth()->user()->regions()->first()->name

     

    نمایش میده حالا اگه چند منطقه ای که کاربر انتخاب کرد رو بخوام نمایش بدم چیکار باید کرد ؟
    برای نمایش شهر تو این حالت که رابطه چند به چند هست چطوری باید اسم شهر رو چاپ کنم؟
    فقط تونستم ایدی شهر رو چاپ کنم

                     {{ auth()->user()->regions()->first()->city_id }}

     


  4. دو تا فیلد تعریف کردم 

    image

    video

    دیفالت رو nullabel گذاشتم حالا هر کدوم خواستم اپلود میکنم

    فقط نمیدونم تو بلید به چه شکل شرط بزارم 

       @if (اینجا نمیدونم چی بزارم)
                     <img src="{{ $news->image }}" alt="" class="img-fluid">
                @else
                    <video width="500" controls preload>
                        <source src="{{ $news->video }}" type="video/mp4">
                    </video>
                @endif

     

    تو کنترلر به این شکل نوشتم ایراد داره ؟دیتا ثبت شد و اکیه فقط میخام بدونم مشکلی نداشته باشه

            auth()->user()->news()->create($request->all());

    یا به این شکل بنویسم ؟چون ویدئو هم هست نمیدونم به این روش چطوری بنویسم

     if($request->hasFile('image')) {
    
                    $file = $request->file('image');
                    $ext = $file->getClientOriginalExtension();
                    $file_name = auth()->user()->id . '_' . time() . '.' . $ext;
                    $file->storeAs('/', $file_name, 'files');
        
                    $data['image'] = $file_name;
                 }
    
                auth()->user()->update($data);

     


  5. در در ۱۴۰۱/۱۰/۱۳ در 00:27، saber گفته است :

    میتونید برای عکس و فیلم هر کدومش جداگانه یه فیلد بذارید و در بخش کاربری هم هر کدومش که مقدار داشت همون رو به کاربر نمایش بدید.

    از mime type هم میتونید استفاده کنید ولی از فیلد جدا استفاده کنید بهتره چون ممکنه یه زمان نیاز داشته باشید که خبر هم عکس و هم ویدئو داشته باشه

    ممنونم اگر برای هر کدوم فیلد جدا بزارم تو بخش کاربری چطور میتونم شرط بزارم اگه عکس بود عکس نمایش بده و اگر ویدئو بود ، ویدئو ؟


  6. سلام من میخام بر اساس mime type اطلاعات فایل تو دیتابیس ثبت کنم
    که اگر عکس بود عکس اپلود بشه و اگر ویدئو بود ویدئو اپلود بشه
    به شکل زیر نوشتم

       $request->validate([
                'name' => 'required',
                'slug' => 'unique:counselings',
                'status' => '',
                'description' => 'required',
                // 'file' => ['required','mimetypes:video/mp4,image/jpeg,image/png,image/gif,audio/mp3,audio/mpeg'],
                'file' =>['mimes:jpeg,png,mp4','mimetypes:image/jpeg,image/png,video/mp4,video/avi,video/mpeg'],
     
            ]);
     
            if($request->hasFile('file')) {
                $files = $request->file('file');
                $ext = $files->getClientMimeType();
                $file_name = auth()->user()->id . '_' . time() . '.' . $ext;
                $files->storeAs('/', $file_name, 'public');
     
                $data['file'] = $file_name;
             }

    اروری که میگیرم

    file پسوند و نوع فایل باید: jpeg, png, mp۴ باشد
    file پسوند و نوع فایل باید: image/jpeg, image/png, video/mp۴, video/avi, video/mpeg باشد

     

    میخام بعدا تو بلید اگر عکس بود عکس نمایش بده 

    اگر ویدئو بود ویدئو برای کاربر نمایش بده


  7. سلام وقت بخیر
    موقع ثبت نام کاربر ازش میخام استان و شهر و منطقه وارد کنه که هر کاربر هم بتونه چند منطقه یا یک منطقه رو انتخاب کنه
    یا بعدا بتونه استان و شهر و منطقه رو تغییر بده که اینکارو انجام دادم فقط نمیدونم درسته یا نه
    رابطه چند به چند ایجاد کردم

    حالا میخام بعد از ثبت اطالاعات ، شهر و منطقه کاربر رو تو پروفایلش نمایش بدم
    برای نمایش منطقه به این شکل کوئری زدم که dd گرفتم درست نمایش میده

            $regions = auth()->user()->regions()->first();

    حالا نمیدونم چطوری تو بلید خروجی بگیرم که اسم منطقه ها یا یک منطقه رو نمایش بده

                     {{ auth()->user()->region_id }}

    اینجوری که چیزی نشون نمیده

    و اینکه میخام شهر رو هم نمایش بدم تو پروفایل ولی نمیدونم به چه صورت اینکارو انجام بدم
    چون رابطه چند به چند بود چطوری میتونم مشخص کنم که هر کابر چه شهری انتخاب کرده ؟

    به این شکل مینویسم که اصلا city_id پیدا نمیکنه

     

            $cities = City::find($user->regions->city_id);

    مدل استان

       public function cities()
        {
            return $this->hasMany(City::class);
        }

     

    مدل شهر

        public function provinces()
        {
            return $this->belongsToMany(Province::class);
        }
     
        public function regions()
        {
            return $this->hasMany(Region::class);
        }

     

    مدل منطقه

       public function City()
        {
            return $this->belongsToMany(City::class);
        }
     
        public function users()
        {
            return $this->belongsToMany(User::class);
        }

     

    مدل یوزر

        public function regions()
        {
            return $this->belongsToMany(Region::class);
        }

     


  8. سلام شب بخیر  
    من میخام یه بخش از سایتم که مثلا مربوط به خبر هست  
    و فیلدهای جدولم شامل  
    title  
    description  
    file  
    حالا میخام تو پنل ادمین  اگه عکس آپلود کردم تو بلید عکس نمایش بده  
    اگه ویدئو آپلود کردم تو بلید ویدئو نمایش بده  
    برای این باید از mime type استفاده کرد؟  
    به چه شکل باید استفاده کنم؟ باید فیلد جدید بزارم تو دیتابیس برای type ؟؟  
    یا راه حل دیگه ای اگه هست ممنون میشم راهنمایی کنید  
    چطوری میتونم تو پنل یا تو بلیدی که کاربر میبینه کاری کنم اگه ویدئو آپلود کردم نمایش بده یا اگه عکس اپلود کردم عکس نمایش بده


  9. سلام وقت بخیر 

    من میخام ثبت نام چندمرحله ای داشته باشم 

    به این صورت که اول کاربر با شماره موبایل ثبت نام میکنه و احراز هویت میشه که تا اینجا اکیه و هدایت میشه به صفحه home

    بعدش میخام یک سری فیلد دیگه رو پر کنه اگه اطلاعات کامل پر شد کاربر بتونه روت home رو ببینه

    یه فیلد تو دیتابیس به این شکل ایجاد کردم 

                $table->boolean('register_at')->nullable()->default(0);

    یک میدلور هم ایجاد کردم میخام اگه اطلاعات تکمیل شد کاربر روت home ببینه

    اگر نشد هدایت بشه به روت rule و اطلاعات رو به ترتیب پر کنه

        public function handle(Request $request, Closure $next)
        {
    
            if($request->user()->isCompleted()) {
                return $next($request);
    
            }
    
            return redirect('/rule');
        }

     

    تو مدل user هم به این شکل نوشتم اینجا چطوری باید چک کنم کاربر اطلاعاتش تکمیل شد؟

        public function isCompleted()
        {
            return $this->is_completed;
        }

     


  10. در 3 ساعت قبل، smkou گفته است :

    سلام وقت بخیر.

    آموزش احراز هویت پیامکی با موبایل در لاراول رو سرچ کنی سایت 7learn آموزشش رو قرار داده، شاید api هم وجود داشته باشه اما من تاحالا تست نکردم بخاطر همین بیشتر نمی‌تونم راهنمایی کنم.

    دیدم اونو ولی متوجه نمیشم


  11. سلام شب بخیر
    من میخام فراموشی رمز عبور با شماره موبایل انجام بدم اموزشی هست که بتونم طبق اون پیش برم ؟
    به جای اینکه لینک ایمیل بشه میخام به شماره موبایل کاربر ارسال بشه

    یا روشی اگه هست ممنون میشم راهنمایی کنید


  12. در 7 ساعت قبل، saber گفته است :

    شما متد اسکوپ رو توی مودل User باید بنویسید از اسکوپ برای استفاده از کوئری Model جاری استفاده میکنن ولی کدتون رو توی مودل ActiveCode نوشتید و چون نتیجه درستی برنمیگرده

    شرطی که گذاشتید درست عمل نمیکنه و به روت token ریدایرکت میشه

    محل کدها رو تغییر بدید بعد کدتون رو تست کنید

    این تیکه کد گذاشتم تو مدل user

        public function scopeVerifyCode($query , $code,  $user)
        {
            return !! $user->activeCode()->whereCode($code)->where('expired_at' , '>' , now())->first();
        }

    و کنترلر هم به این شکل

     

      $status = ActiveCode::verifyCode($request->token , $user);

     

    اروری که دریافت کردم

    Call to undefined method App\Models\ActiveCode::verifyCode()
    

    دقیقا به همون لاین وریفای کد تو کنترلر ارور داده 


  13. کنترلر به این شکل نوشتم و متد اسکوپ کامنت کردم بازهم برمیگرده به روتی که کد وریفای باید وارد بشه 

        public function token(Request $request , User $user)
        {
            
            $request->validate([
                'token' => 'required'
            ]);
     
            $count = $user->activeCode()->whereCode($request->token)->where('expired_at' , '>' , now())->count();
     
            if(! $count) {
                return redirect(route('phone.token'));
            }
     
            auth()->loginUsingId($user->id,$request->get('auth.remember'));
            $user->activeCode()->delete();
            return redirect('/home');
        }

     


  14. در 1 ساعت قبل، saber گفته است :

    توی کدهاتون متد اسکوپ رو موقع استفاده مقادیر اشتباه بهش پاس دادید توی ورودی متد آبجکت user رو دارید ولی موقع پاس دادن اطلاعات بجای user فقظ phone رو بهش پاس دادید

    من تو کنترلر به این شکل تغییر دادم این درسته یا این هم اشتباهه؟

            $status = ActiveCode::verifyCode($request->token , $user);

    چون دوباره برمیگرده به صفحه وریفای کد 

     

    تو متد اسکوپ نمیدونم چطوری باید بنویسم 


  15. در 3 ساعت قبل، saber گفته است :

    مشکل اصلی شما رو در تاپیک زیر راه حلش رو نوشتم

    بعد از ثبت نام هم خطاهای دیگه ای بعد از ثبت کد ارسالی برای کاربر دارید که اونهم مربوط به متد اسکوپ هست که ورودی متد رو باید اصلاح کنید.

    ممنون از راهنماییتون مهندس لطف کردید

    پس بهتره خودمون بنویسیم روت هارو 

    بله الان از متد اسکوپ ارور گرفته 

    Call to a member function activeCode() on null
    

    ورودی به چه صورت باید بنویسم 

       public function scopeVerifyCode($query , $code,  $user)
    
        {
    
            return !! $user->activeCode()->whereCode($code)->where('expired_at' , '>' , now())->first();
    
        }

    مدل یوزر که نباید باشه درسته؟چون ارور دریافت کردم وقتی مدل پاس دادم

     


  16. در 38 دقیقه قبل، saber گفته است :

    متد لاگین رو دوبار نوشتین؟ توی کدهاتون متد login با دو ورودی مختلف هست کدوم رو الان استفاده میکنید؟

    و در مورد خطایی که بالا اشاره کردید کلاس User رو چک کنید ببینید از کلاس Authenticatable ارث بری کرده؟ باید مادل یوزر از این کلاس ارث بری کنه
    اگر باز نتونستید حل کنید خواستید کدهاش رو برام زیپ کنید بفرستید روی سیستم خودم تست کنم

    من موفق نشدم انجام بدم کد براتون ارسال کردم تو پیام خصوصی انجمن

    تو تلگرام هم فرستادم

×
×
  • جدید...