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

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

Paradox

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

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

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

  • Days Won

    1

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


  1. اینجا مشکل از remmber هست ؟

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

        public function login(AuthenticatableContract $user, $remember = false)
    

     

    تو متد token  به این شکل نوشتم 

      public function token(Request $request , User $user)
        {
            $request->validate([
                'token' => 'required'
            ]);
    
            $status = ActiveCode::verifyCode($request->token , $user);
    
            if(Auth::loginUsingId($user->id , $request->get('remember'))) {
                $user->activeCode()->delete();
                return redirect('/');
            }
    
            if($status) {
                return redirect(route('rule'));
            } else {
                // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود');
                return redirect(route('phone.token'));
            }
            return redirect(route('phone.token'));
        }

     

     

    تو loginController به این شکل  نوشتم که نمیدونم اشتباه از متد token هست  یا متد login

    اینجا validate تو متد login باشه مشکلی نداره؟

    
        public function login(Request $request)
        {
      
            $request->validate([
                'phone' => 'required|exists:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/', 
                'password' => 'required|string',
            ]);
    
            $remember = ($request->has('remember')) ? true : false;
    
            return redirect()->route('home');
        }

     


  2. ارور از سمت سرویس پیامک بود حل شد 

    الان این ارور دارم

     

    lluminate\Auth\SessionGuard::login(): Argument #1 ($user) must be of type Illuminate\Contracts\Auth\Authenticatable, Illuminate\Http\RedirectResponse given, called in C:\xampp\htdocs\project\vendor\laravel\ui\auth-backend\RegistersUsers.php on line 36

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

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

      public function showToken()
        {
            return view('auth.code');
        }
    
        public function token(Request $request)
        {
            $user = $request->validate([
                'token' => 'required'
            ]);
    
            $status = ActiveCode::verifyCode($request->token , $user);
    
            if(auth()->loginUsingId($request->user()->get('auth.remember'))) {
                $user->activeCode()->delete();
                return redirect('/');
            }
    
            if($status) {
                return redirect(route('rule'));
            } else {
                // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود');
                return redirect(route('phone.token'));
            }
            return redirect(route('phone.token'));
        }

     


  3. در در ۱۴۰۱/۸/۲۳ در 00:38، saber گفته است :

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

    بعد کاربر رو لاگین کنید و با یه میدلور  چک کنید ببینید اگر مقدار register_at برای کاربر لاگین شده برابر با null بود کاربر رو به صفحه قوانین منتقل کنید تا ثبت نامش رو تکمیل کنه

    و در نهایت بعد از تکمیل ثبت نام مقدار register_at رو برابر تایم استمپ بذارید که این رو هم مقدارش رو از کلاس کربن به شکل Carbon::now میتونید دریافت کنید.

    اگر هم register_at مقدار داشت و کاربر ثبت نامش رو قبلا تکمیل کرده بود به صفحه اصلی هدایت میکنید این روند مشکل شما رو حل میکنه خیلی پیچیدگی خاصی نداره

     

    سشن رو برداشتم مثل همون ارور بالا رو دارم 

    این کد مشکلی داره ؟

       protected function validator(array $data)
        {
            return Validator::make($data, [
                'phone' => 'required|unique:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/',
                'password' => ['required', 'string', 'min:8', 'confirmed'],
            ]);
        }
    
        /**
         * Create a new user instance after a valid registration.
         *
         * @param  array  $data
         * @return \App\Models\User
         */
        protected function create(array $data)
        {
            $user = User::create([
                'phone' => $data['phone'],
                'password' => Hash::make($data['password']),
            ]);
    
            $apiKey = config('services.ghasedak.key');
            $code = ActiveCode::generateCode($user);
    
            try{  
                $message = "کد احراز هویت شما : " . $code . " ";
                $lineNumber = "10008566"; 
                $receptor = $data['phone'];
                $api = new \Ghasedak\GhasedakApi($apiKey);
                $api->SendSimple($receptor,$message,$lineNumber);  
               }  
               catch(ApiException $e){
                   throw $e;
               }
               catch(HttpException $e){
                   throw $e;
               }   
    
               return redirect(route('phone.token'));
        }

     

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

    و از این لاین ارور میگیره

                $api->SendSimple($receptor,$message,$lineNumber);  

     


  4. آموزشی هست که معرفی کنید ؟

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

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

    یه آموزش خریدم  قبلا ولی برای ورود بود ، کد زمان ثبت نام ارسال نمیشد فقط زمانی که کاربر وارد میشه ارسال کد انجام میشه

    آموزش های یوتیوب هم به همین شکل بود

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

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


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

    میتونید در دیتابیس توی جدول کاربران یه فیلد به اسم register_at اضافه کنید که پیشفرض null قرار بدید بعد زمانی که کاربر مراحل ثبت نام رو تموم کرد مقدار register_at رو برابر با

    تایم استمپ اون تاریخ قرار بدید که مشخص بشه این کاربر در این تاریخ ثبت نامش تموم شده بعد هر بار کاربری لاگین میکنه چک میکنید که اگر مقدار register_at خالی نبود یعنی

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

    با میدلور هم میشه انجام داد؟

    چطوری میتونم مقدار register_at رو برابر با تایم استمپ تاریخ قرار بدم ؟

     


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

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

    بله دقیقا دغدغه منم همین بود اگه نصفه ول کنه چیکار میشه کرد

    حالا کاربر اگه لاگین شده در نظر بگیریم در ابتدا بعد از احراز هویت با موبایل به روت home دسترسی داره ؟

    چون میخام وقتی دفعات بعد لاگین کرد بره به روت home

    ولی در حالت عادی بعد از اعتبار سنجی موبایل بره به روت قوانین 

     

    میشه در هر حالت بره به صفحه home ولی شرط بزاریم تا اطلاعات پر نشد روت home نشون نده ؟؟

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


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

    شما با کلید auth.user_id میخواید شناسه کابر رو بگیرید ولی جایی این رو set نکردید زمانی که کاربر رو با متد create ایجاد میکنید بعدش با همون کلید auth.user_id شناسه کاربر رو توی سشن set کنید تا بعدش بتونید با متد get دریافتش کنید. البته اگه بعد ثبت نام کاربر بطور خودکار توی سایت لاگین میشد به این session نیازی نبود و براحتی از طریق هلپر فانکشن auth به اطلاعات کاربر دسترسی داشتین

    من میخام ثبت نامم چند مرحله ای باشه بعد از اینکه کاربر احراز هویت شد با شماره موبایل بره به صفحات بعدی اطلاعات پر کنه تا به صفحه home دسترسی داشته باشه و بعدا هر وقت login کرد وارد صفحه home بشه

    این روشی که دارم میرم یعنی اشتباهه ؟؟

    الان من تو متد craete  باید auth.user_id رو قرار بدم ؟

    متوجه نشدم چطوری تعریفش کنم 

     

     


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

    خب پس مشکل از همون قسمت هست باید ببینید جایی که session رو set میکنید چه ایرادی داره چون اصلا ست نمیشه توی کدهایی که گذاشتید قسمت ست شدن session رو ندیدم

    من کل کدهارو میزارم اینجا

    controller

    class RegisterController extends Controller
    {
            /**
         * Create a new controller instance.
         *
         * @return void
         */
        public function __construct()
        {
            $this->middleware('guest');
        }
    
        public function showRegister()
        {
            return view('auth.register');
        }
    
        public function register(Request $request)
        {
            $data = $request->validate([
                'phone' => 'required|unique:users,phone|digits:11|numeric|regex:/[0]{1}[0-9]{10}/',
                'password' => ['required', 'string', 'min:8', 'confirmed'],
                'reagent_code' => ['nullable' , 'string' , 'max:255' , 'min:3'],
         ]);
         
               $user = User::create([
                'phone' => $data['phone'],
                'password' => Hash::make($data['password']),
                'reagent_code' => $data['reagent_code'],
            ]);
    
    
            $apiKey = config('services.ghasedak.key');
            $code = ActiveCode::generateCode($user);
            $request->session()->flash('phone' , $data['phone']);
            
            
            try{  
                $message = "کد احراز هویت شما : " . $code . " ";
                $lineNumber = "10008566"; 
                $receptor = $data['phone'];
                $api = new \Ghasedak\GhasedakApi($apiKey);
                $api->SendSimple($receptor,$message,$lineNumber);  
               }  
               catch(ApiException $e){
                   throw $e;
               }
               catch(HttpException $e){
                   throw $e;
               }           
     
            return redirect()->route('phone.token');
    
        }
    
        public function showToken(Request $request)
        {
            if(! $request->session()->has('phone')) {
                return redirect()->route('register');
            }
    
            $request->session()->reflash();
            
            return view('auth.code');
        }
        
        public function token(Request $request)
        {
            $request->validate([
                'token' => 'required'
            ]);
            
            if( ! $request->session()->has('phone')) {
                return redirect()->route('register');
            }
    
            // $request->session()->reflash();
    
            $user = User::findOrFail(dd($request->session()->get('auth.user_id')));
            $status = ActiveCode::verifyCode($request->token , $user);
     
            if(! $status) {
    
                // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود');
                return redirect()->route('register');
            } else {
                $user->activeCode()->delete();
                return redirect()->route('rule');
            }
            return redirect()->route('register');
        }
    
    
        public function rule(Request $request)
        {
            // $request->validate([
            //     'rule' => 'required'
            // ]);
    
            // if($request)
            // {
            //     return redirect(route('auth.child'));
            // }
    
            return view('auth.rule');
        }
    
    
     
    
    }

    route

    Route::namespace('Auth')->middleware('guest')->group(function() {
       
        Route::get('register' , [RegisterController::class , 'showRegister'])->name('register');
        Route::post('register' , [RegisterController::class , 'register']);
    
        Route::get('/token' , [RegisterController::class , 'showToken'])->name('phone.token');
        Route::post('/token' , [RegisterController::class , 'token']);
    
        Route::get('rule' , [RegisterController::class , 'rule'])->name('rule');
    });

     


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

    سلام به نظر مشکل بخاطر این هست که شما کلا یوزر رو از دیتابیس حذف میکنید شما بعد از تایید کاربر برای حذف کد ارسالی فقط باید فیلد کد ارسالی رو آپدیت کنید و مقدارش رو خالی بذارید.

    نباید از متد delete استفاده کنید چون کلا کاربر رو از دیتابیس حذف میکنه و بعد ارور 404 میده چون کاربری وجود نداره

    به چه شکل باید بنویسم؟

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


  10. سلام شب بخیر

    من میخام کاربر با شماره موبایل ثبت نام انجام بده و بعد از اینکه کد براش ارسال شد وارد صفحه قوانین بشه ، ثبت نام با موبایل و احراز هویت رو انجام دادم و اکیه

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

    که مشکلی که دارم اینه صفحه 404 نمایش میده که یعنی کاربر وجود نداره

     

        public function token(Request $request)
        {
            $request->validate([
                'token' => 'required'
            ]);
            
            if( ! $request->session()->has('phone')) {
                return redirect()->route('register');
            }
    
            $user = User::findOrFaild($request->session()->get('auth.user_id'));
            $status = ActiveCode::verifyCode($request->token , $user);
     
            if(! $status) {
    
                // alert()->error('شماره تلفن و احرازهویت دو مرحلهای شما تایید نشد.' , 'عملیات ناموفق بود');
                return redirect()->route('register');
            } else {
                $user->activeCode()->delete();
                return redirect()->route('rule');
            }
            return redirect()->route('register');
        }

     

    با سشن انجام دادم

    این خط کد مشکل داره

            $user = User::findOrFaild($request->session()->get('auth.user_id'));

     

    وقتی هم به جای findOrFaild از find استفاده میکنم این ارور دارم

     

    call to a member function activecode() on null

     

    تو این متد به چه شکل باید بنویسم که اگه کدی که کاربر وارد کرد درست بود هدایت بشه به صفحه مد نظر؟

     


  11. سلام من یک ویرایشگر نیاز دارم مثل همین ویرایشگری که تو انجمن هست

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

    markdown به سایتم اضافه کردم ولی خودم به طور دستی باید داخل  بک تیک کدارو ``` بزارم

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

    لطفا یه ویرایشگر معرفی کنید خیلی ضررویه 


  12. در در ۱۴۰۰/۳/۸ در 01:16، saber گفته است :

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

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

    و باز هم ارور زیر دارم

    Call to a member function getClientOriginalName() on null
        public function store(Request $request , File $files)
        {
           $validData = $request->validate([
                'title' => 'required',
                'description' => 'required',
                'image' => 'required',
                'file' => 'required',
                'categories' => 'required',
                'slug' => 'unique:files',
                'status' => ''
    
            ]);
    
    
            if (empty($request->slug)) {
                $slug = SlugService::createSlug(File::class, 'slug', $request->title);
            } else {
                $slug = SlugService::createSlug(File::class, 'slug', $request->slug);
            }
            $request->merge(['slug' => $slug]);
    
    
            $files = Storage::disk('public')->putFileAs('files' , $request->file('file') , $request->file('file')->getClientOriginalName($files))->create($request->all());
            $files->categories()->sync($validData['categories']);
    
            alert()->success('مطلب مورد نظر با موفقیت ثبت شد' , 'با تشکر');
    
            return redirect(route('admin.files.index'));
        }

     

    تو مدل فایل اینو قرار دادم درسته؟

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

     

    تو مدل یوزر باید این رابطه رو قرار بدم ؟

        public function files()
        {
            return $this->hasMany(File::class);
        }

     


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

    الان نمیدونم چجوری باید اطلاعات داخل دیتابیس فرستاده بشه

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

    Call to undefined method App\User::file()
       public function store(Request $request , File $file)
        {
           $validData = $request->validate([
                'title' => 'required',
                'description' => 'required',
                'image' => 'required',
                'file' => 'required',
                'categories' => 'required',
                'slug' => 'unique:files',
                'status' => ''
    
            ]);
    
    
            if (empty($request->slug)) {
                $slug = SlugService::createSlug(File::class, 'slug', $request->title);
            } else {
                $slug = SlugService::createSlug(File::class, 'slug', $request->slug);
            }
            $request->merge(['slug' => $slug]);
    
            $files = auth()->user()->file()->create($request->all());
            $files->categories()->sync($validData['categories']);
    
            alert()->success('مطلب مورد نظر با موفقیت ثبت شد' , 'با تشکر');
    
            return redirect(route('admin.files.index'));
        }

     

     

     

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


  14. ممنون از شما ایدی هارو تغییر دادم درست شد 

    فقط موقع ثبت تو دیتابیس یه خطا دارم که متاسفانه نتونستم حل کنم

     

    BadMethodCallException
    Call to undefined method App\User::file()
    http://localhost:8000/admin/files

     

    از این خط ارور میگیره

            $files = auth()->user()->file()->create($request->all());

     


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

    من میخام دوتا تصویر شاخص اضافه کنم به پروژم

    یکی برای اپلود تصویر  و یکی برای اپلود فایل های دانلودی

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

    ممنون میشم راهنمایی کنید

    
            <script src="/js/ckeditor/ckeditor.js"></script>
            <script>
    
                CKEDITOR.replace('description', { filebrowserImageBrowseUrl: '/file-manager/ckeditor' });
    
                document.addEventListener("DOMContentLoaded", function() {
    
                    document.getElementById('button-image').addEventListener('click', (event) => {
                        event.preventDefault();
    
                        window.open('/file-manager/fm-button', 'fm', 'width=1400,height=800');
                    });
                });
    
    
                // set file link
                function fmSetLink($url) {
                    document.getElementById('image_label').value = $url;
                }

     

        <div class="form-group">
                                <label class="col-sm-2 control-label">آپلود تصویر شاخص</label>
                                <div class="input-group">
                                    <input type="text" id="image_label" class="form-control" name="image">
                                    <div class="input-group-append">
                                        <button class="btn btn-outline-secondary" type="button" id="button-image">انتخاب</button>
                                    </div>
                                </div>
                            </div>
    
    
    
                            <div class="form-group">
                                <label class="col-sm-2 control-label">آپلود فایل</label>
                                <div class="input-group">
                                    <input type="text" id="image_label" class="form-control" name="file">
                                    <div class="input-group-append">
                                        <button class="btn btn-outline-secondary" type="button" id="button-image">انتخاب</button>
                                    </div>
                                </div>
                            </div>

     

     


  16. سلام به همگی

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

    نمیدونم چیکار باید کرد ممنون میشم راهنمایی کنید 

    Route::get('/users/status/{user}', 'User\UserController@updatestatus')->name('admin.users.status');
    
                                @foreach($users as $user)
    
                                @switch($user->status)
                                @case(1)
                                @php
                                $url = route('admin.users.status',$user->id);
                                $status = '<a href="'.$url.'" class="badge badge-success">فعال</a>' @endphp
                                @break
                                @case(0)
                                @php
                                $url = route('admin.users.status',$user->id);
                                $status = '<a href="'.$url.'" class="badge badge-warning">غیر فعال</a>' @endphp
                                @break
                                @default
                                @endswitch

     

                                        <td>{!!$status!!}</td>
        protected $attributes = [
            'status' => 1 ,
        ];
       public function updatestatus(User $user)
        {
            if ($user->status == 1) {
                $user->status = 0;
            } else {
                $user->status = 1;
            }
    
            $user->save();
            return redirect(route('admin.users.index'));
        }

     

     

    • تشکر 1

  17. سلام برای نمایش اسلاگ من با توجه به فیلم پیش رفتم ولی وقتی بر اساس اسلاگ میزارم تو سینگل پیج ارور 404 میده

     

    روت

    Route::get('/blog/{blog}/', 'frontend\BlogController@single')->name('blog');

    چرا روت رو پیدا نمیکنه؟

    این بخش رو رو ماژول کردم بخاطر این هس نمیشناسه؟

        public function single(Blog $blog)
        {
            $blog->increment('hit');
            return view('blog::home.single-blog' , compact('blog'));
        }

     

                                            <a href="{{route('blog', $blog->slug)}}" class="btn btn-primary">جزئیات مطلب</a>

     

    تو نوار ادرس اسلاگ میاد ولی در نهایت صفحه

    404
    Not Found

     

    نمایش میده

×
×
  • جدید...