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

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

HASSSSAN

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

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

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

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


  1. سلام، یه پروژه‌ی ساده دارم با دوتا کاربر، یه دکمه هست که میخوام فقط کاربر  با ایدی 1 بتونه ببینه ( مشابه ادمین بودن و نبودن کاربر)

    کدها:

    shift_code_policy

    public function add(User $user)
        {
            return $user->id == 1;
        }

    authserviceprovide

     protected $policies = [
            'App\Model' => 'App\Policies\ModelPolicy',
            'App\shift_code' => 'App\Policies\shift_code_policy',
        ];

    view:

    @can('add',$user,\App\shift_code::class)
                                <a href="/input_data" class="btn btn-primary">input data </a>
                            @endcan

    دکمه رو اصلا نشون نمیده ولی اگه @cannot استفاده کنم دکمه رو نشون میده!

     

     

     


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

    سلام

    شما برای این کار باید یک میان افزار (Middleware) ایجاد نمایید. سپس برای تمامی مسیرها (Route) از این میان افزار استفاده کنید. با استفاده از artisan یک میان افزار به نام CheckLogin ایجاد نمایید.

    
    php artisan make:middleware CheckLogin

    میان افزار ایجاد شده را در مسیر app/Http/Kernel.php  در انتهای آرایه routeMiddleware$  با نام اختیاری check-login ثبت (Register) نمایید.

    
    'check-login' => \App\Http\Middleware\CheckLogin::class,

    حال از route های زیر در  web.php استفاده نمایید.

    
    Auth::routes();
    
    // for home page
    Route::get('/', 'HomeController@index')->name('home');
    
    Route::middleware('check-login')->group(function() {
    	// insert all routes here
       // for example....
       Route::get('/faq', 'HomeController@faq')->name('home.faq');
       Route::get('/search/tag/{tag}', 'SearchController@tag')->name('home.tag');
    
    });

     در انتها کافی است متد ()handle را به صورت زیر ویرایش کنید.

    
    public function handle($request, Closure $next)
    {
            return redirect()->to('login');
    }

    حال کاربر به جز صفحه اصلی سایت، به تمامی صفحات سایت بدون لاگین دسترسی ندارد.

    امیدوارم که این پاسخ مشکل شما را حل کرده باشد.

    خیلی خیلی ممنونم، مشکلم حل شد.


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

    سلام

    شما برای این کار باید یک میان افزار (Middleware) ایجاد نمایید. سپس برای تمامی مسیرها (Route) از این میان افزار استفاده کنید. با استفاده از artisan یک میان افزار به نام CheckLogin ایجاد نمایید.

    
    php artisan make:middleware CheckLogin

    میان افزار ایجاد شده را در مسیر app/Http/Kernel.php  در انتهای آرایه routeMiddleware$  با نام اختیاری check-login ثبت (Register) نمایید.

    
    'check-login' => \App\Http\Middleware\CheckLogin::class,

    حال از route های زیر در  web.php استفاده نمایید.

    
    Auth::routes();
    
    // for home page
    Route::get('/', 'HomeController@index')->name('home');
    
    Route::middleware('check-login')->group(function() {
    	// insert all routes here
       // for example....
       Route::get('/faq', 'HomeController@faq')->name('home.faq');
       Route::get('/search/tag/{tag}', 'SearchController@tag')->name('home.tag');
    
    });

     در انتها کافی است متد ()handle را به صورت زیر ویرایش کنید.

    
    public function handle($request, Closure $next)
    {
            return redirect()->to('login');
    }

    حال کاربر به جز صفحه اصلی سایت، به تمامی صفحات سایت بدون لاگین دسترسی ندارد.

    امیدوارم که این پاسخ مشکل شما را حل کرده باشد.

    خیلی خیلی ممنونم، مشکلم حل شد.


  4. سلام دوستان

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

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

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

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

    کد ارسال:

       function g() {
            event.preventDefault();
            var a = $('#myform1').serializeArray();
            $.ajax({
                url: "{{route("pv.send")}}",
                method: "Post",
                data: a,
                success: function (data) {
                    console.log(a);
                },
                error: function (data) {
                    console.log(data);
                }
            })
        }

    کد دریافت

      function h() {
            event.preventDefault();
            var sender_id = {{$temp[0]->sender_id}};
            var receiver_id = {{$temp[0]->receiver_id}};
            $.ajax({
                url: "{{route("cheat")}}",
                method: "Get",
                data: {
                    "sender_id": sender_id,
                    "receiver_id": receiver_id
                },
                success: function (data) {
                    console.log(data);
                },
                error: function (data) {
                    console.log(data);
                }
            })
        }

    body:

    <body>
    <?php $k = 0; ?>
    @foreach($temp as $pv)
        @if($k==0)
            <div class="container">
                <p>{{$pv->body}}</p>
                <span class="time-right">{{$pv->created_at}}</span>
            </div>
            <?php $k = 1; ?>
        @else
            <div class="container darker">
                <p>{{$pv->body}}</p>
                <span class="time-left">{{$pv->created_at}}</span>
            </div>
            <?php $k = 0; ?>
        @endif
    @endforeach
    <form id="myform1" action="{{route('pv.send')}}" method="post">
        @csrf
        <textarea id="message" class="container form-control @error('message') is-invalid @enderror" type="textarea"
                  rows="5" cols="108"
                  name="message"></textarea>
        <input type="hidden" name="sender_id" value="{{$temp[0]->sender_id}}">
        <input type="hidden" name="receiver_id" value="{{$temp[0]->receiver_id}}">
        @error('message')
        <br>
        <span class="alert alert-danger" role="alert">
                                            <strong>{{ $message }}</strong>
                                        </span>
        <br>
        <br>
        @enderror
        <button onclick="g()" class="btn btn-primary">Send</button>
    </form>
    <button onclick="h()" class="btn btn-primary">Receive</button>
    </body>

     


  5. سلام دوستان

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

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

    ممن.ن میشم راهنمایی بکنید.


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

    یکی از اشکالاتی که کدتون داره این هست که قسمت columns رو در داخل ایجکس قرار دادید باید خارج از کد ایجکس قرار بدید که به شکل زیر میشه

    
    $(document).ready(function () {
            var id={{$class->id}};
            $('#student_table').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax":({
                    url: "{{route("class.member_list")}}",
                    method: "get",
                    data: {id: id}
                }),
                columns : [
                        {"data": "first_name", orderable: true, searchable: true},
                        {"data": "last_name", orderable: true, searchable: true},
                        {"data": "email", orderable: false, searchable: false},
                        {"data": "created_at", orderable: true},
                        {"data": "action", orderable: false, searchable: false}
                    ]
            });

     

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

     


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

    route:

    
    Route::GET('/members/{id}', 'ClassController@member')->name('class.member');
    
    Route::GET('members/list', 'ClassController@member_list')->name('class.member_list');

    link:

    
    <a href="{{route('class.member', ['id' => $class->id])}}"
                                   class="btn btn-lg btn-block  btn-success">Members</a>

    کنترلر:

    
    public function member($id)
        {
            $class = Classroom::where('id', $id)->first();
            return view('class.Show_Member', compact('class'));
        }
    
        public function member_list(Request $request)
        {
            $user = \DB::table('scs')
                ->join('users', 'scs.user_id', '=', 'users.id')
                ->where('classroom_id', $request->input('id'))
                ->get();
            return DataTables::of($user)
                ->addColumn('action', function ($user) {
                    return '<a href="#" class="btn btn-xs btn-danger delete" id=" ' . $user->id . ' ">Delete</a>';
                })
                ->make('true');
        }

    script:

    
    <script type="text/javascript">
        $(document).ready(function () {
            var id={{$class->id}};
            $('#student_table').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax":({
                    url: "{{route("class.member_list")}}",
                    method: "get",
                    data: {id: id},
                    "columns": [{"data": "first_name", orderable: true, searchable: true},
                        {"data": "last_name", orderable: true, searchable: true},
                        {"data": "email", orderable: false, searchable: false},
                        {"data": "created_at", orderable: true},
                        {"data": "action", orderable: false, searchable: false}
                    ]
                }),
            });
    
            $(document).on('click', '.delete', function () {
                var id = $(this).attr("id");
                console.log(id);
                const swalWithBootstrapButtons = Swal.mixin({
                    customClass: {
                        confirmButton: 'btn btn-success',
                        cancelButton: 'btn btn-danger'
                    },
                    buttonsStyling: false
                })
                swalWithBootstrapButtons.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: 'Yes, delete it!',
                    cancelButtonText: 'No, cancel!',
                    reverseButtons: true
                }).then((result) => {
                    if (result.value) {
                        $.ajax({
                            url: "{{route("class.delete_member")}}",
                            method: "get",
                            data: {id: id},
                            success: function (data) {
                                $('#student_table').DataTable().ajax.reload();
                            },
                            error: function (data) {
                                console.log('Error:', data);
                            }
                        })
                        swalWithBootstrapButtons.fire(
                            'Deleted!',
                            'Your file has been deleted.',
                            'success'
                        )
                    } else if (
                        result.dismiss === Swal.DismissReason.cancel
                    ) {
                        swalWithBootstrapButtons.fire(
                            'Cancelled',
                            'Your imaginary file is safe :)',
                            'error'
                        )
                    }
                })
            });
        })
    </script>

     

    من الان ایرور ajax رو چک کردم، این ایرور رو میده:

    Trying to get property of non-object

    به همراه شماره ی این خط از کد:

    var id={{$class->id}};

    ولی خب توی کنسول مقدار id رو درست چاپ میکنه!

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

    var id=74;

    ایرور ajax این شکلی میشه:456.thumb.JPG.199f9663a7ef9ec9f806bfea52b5525c.JPG


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

    احتمال زیاد مشکل از متد کنترلر هست که اطلاعات رو باید به شکل json برگردونه

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

    کد ها رو قرار دادم. پیشاپیش ممنون از کمکتون


  9. route:

    Route::GET('/members/{id}', 'ClassController@member')->name('class.member');
    
    Route::GET('members/list', 'ClassController@member_list')->name('class.member_list');

    link:

    <a href="{{route('class.member', ['id' => $class->id])}}"
                                   class="btn btn-lg btn-block  btn-success">Members</a>

    کنترلر:

    public function member($id)
        {
            $class = Classroom::where('id', $id)->first();
            return view('class.Show_Member', compact('class'));
        }
    
        public function member_list(Request $request)
        {
            $user = \DB::table('scs')
                ->join('users', 'scs.user_id', '=', 'users.id')
                ->where('classroom_id', $request->input('id'))
                ->get();
            return DataTables::of($user)
                ->addColumn('action', function ($user) {
                    return '<a href="#" class="btn btn-xs btn-danger delete" id=" ' . $user->id . ' ">Delete</a>';
                })
                ->make('true');
        }

    script:

    <script type="text/javascript">
        $(document).ready(function () {
            var id={{$class->id}};
            $('#student_table').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax":({
                    url: "{{route("class.member_list")}}",
                    method: "get",
                    data: {id: id},
                    "columns": [{"data": "first_name", orderable: true, searchable: true},
                        {"data": "last_name", orderable: true, searchable: true},
                        {"data": "email", orderable: false, searchable: false},
                        {"data": "created_at", orderable: true},
                        {"data": "action", orderable: false, searchable: false}
                    ]
                }),
            });
    
            $(document).on('click', '.delete', function () {
                var id = $(this).attr("id");
                console.log(id);
                const swalWithBootstrapButtons = Swal.mixin({
                    customClass: {
                        confirmButton: 'btn btn-success',
                        cancelButton: 'btn btn-danger'
                    },
                    buttonsStyling: false
                })
                swalWithBootstrapButtons.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: 'Yes, delete it!',
                    cancelButtonText: 'No, cancel!',
                    reverseButtons: true
                }).then((result) => {
                    if (result.value) {
                        $.ajax({
                            url: "{{route("class.delete_member")}}",
                            method: "get",
                            data: {id: id},
                            success: function (data) {
                                $('#student_table').DataTable().ajax.reload();
                            },
                            error: function (data) {
                                console.log('Error:', data);
                            }
                        })
                        swalWithBootstrapButtons.fire(
                            'Deleted!',
                            'Your file has been deleted.',
                            'success'
                        )
                    } else if (
                        result.dismiss === Swal.DismissReason.cancel
                    ) {
                        swalWithBootstrapButtons.fire(
                            'Cancelled',
                            'Your imaginary file is safe :)',
                            'error'
                        )
                    }
                })
            });
        })
    </script>

     


  10. سلام

    من میخوام برای نمایش لیست اعضای یه کلاس از Yajra Datatables استفاده بکنم ولی برای ارسال و دریافت داده ازش به مشکل خوردم.

    ببینید اگر مسیر اینطوری باشه:

    Route::GET('/members', 'ClassController@member')->name('class.member');

    و اینطوری بریم به مسیر:

         <a href="{{route('message.list')}}"
                                   class="btn btn-lg btn-block  btn-success">Messages</a>
                           

    درست کار میکنه! ولی خب واضحه که من نیاز دارم id  کلاس رو هم pass بکنم.

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

    Route::GET('/members/{id}', 'ClassController@member')->name('class.member');

    این ایرور رو به صورت alert نمایش میده

    DataTables warning: table id=student_table - Invalid JSON response.

    سعی هم کردم که ایرور ajax رو چک بکنم ولی چیز خاصی نصیبم نشد.

    و مشکل بعدی هم اینه که باید id کلاس رو هم برای دریافت داده هم برای عملیات حذف ارسال بکنم! البته اولش باید بتونم بفرستمش برای view.

    <script type="text/javascript">
        $(document).ready(function () {
            $('#student_table').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax": "{{route('class.member_list')}}",
                "columns": [{"data": "first_name", orderable: true, searchable: true},
                    {"data": "last_name", orderable: true, searchable: true},
                    {"data": "email", orderable: false, searchable: false},
                    {"data": "created_at", orderable: true},
                    {"data": "action", orderable: false, searchable: false}
                ]
            });
    
            $(document).on('click', '.delete', function () {
                var id = $(this).attr("id");
                console.log(id);
                const swalWithBootstrapButtons = Swal.mixin({
                    customClass: {
                        confirmButton: 'btn btn-success',
                        cancelButton: 'btn btn-danger'
                    },
                    buttonsStyling: false
                })
                swalWithBootstrapButtons.fire({
                    title: 'Are you sure?',
                    text: "You won't be able to revert this!",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: 'Yes, delete it!',
                    cancelButtonText: 'No, cancel!',
                    reverseButtons: true
                }).then((result) => {
                    if (result.value) {
                        $.ajax({
                            url: "{{route("class.delete_member")}}",
                            method: "get",
                            data: {id: id},
                            success: function (data) {
                                $('#student_table').DataTable().ajax.reload();
                            },
                            error: function (data) {
                                console.log('Error:', data);
                            }
                        })
                        swalWithBootstrapButtons.fire(
                            'Deleted!',
                            'Your file has been deleted.',
                            'success'
                        )
                    } else if (
                        result.dismiss === Swal.DismissReason.cancel
                    ) {
                        swalWithBootstrapButtons.fire(
                            'Cancelled',
                            'Your imaginary file is safe :)',
                            'error'
                        )
                    }
                })
            });
        })
    </script>

    اگر قسمت دیگه ای از کد هم نیازه لطفا بگید که بذارم.

    پیشاپیش از هر کمکی تشکر میشود


  11. سلام

    اگر کاربر بخواد یه کلاس بسازه اطلاعات رو ازش میگیرم بعد از ساخت کلاس به صفحه‌ی اصلی برمیگردیم. همه چیز با موفقیت انجام میشه فقط وقتی برمیگردیم به صفحه ی اصلی ادرس بار مرور گر ادرس اون صفحه رو نمیزنه! آدرس همون صحفه ی ساخت کلاس رو میزنه! و اگر کاربر ریفرش بکنه مثلا، با مشکل رو به رو میشه.

    routes

    Route::GET('/create', function () {
        return view('class/create');
    });
    
    Route::POST('/Create', 'ClassController@create')->name('class.Create');

    اینجا میریم به view ای که برای ساخت کلاس در نظر گرفتیم.

       <a class="btn btn-lg btn-primary" href="/create">Create Class</a>

    کنترلر:

       public function create(Request $request)
        {
            $this->validate($request, [
                'name' => 'required|min:4|max:30'
            ]);
            if (Gate::allows('create_class')) {
                $class = new Classroom();
                $class->name = $request->name;
                $id = auth()->user()->id;
                $class->user_id = $id;
                $random = Str::random(10);
                $class->code = $random;
                $class->save();
                $request->session()->put('flash', ['Done', 'Class has been created successfully', 'success', 'Cool', '3000']);
                return view("Dashboard");
            } else {
                $request->session()->put('flash', ['Nope', 'you are not allowed to create a class.', 'Error', 'Ok', '3000']);
                return view("class/Create");
            }
        }

     بعد ساخت کلاس و برگشت به صفحه اصلی به جای این که ادرس 

    http://127.0.0.1:8000/Dashboard 

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

    http://127.0.0.1:8000/Create


  12. سلام. من یه جدول دارم که لیست اعضای یه کلاس رو نگه میداره، توی این جدول فقط id کسایی که عضو هستن نگه داری میشه و اسمشون رو از طریق eager loading  به دست میارم.داده ها توی یه جدول نمایش داده میشن  ولی سرچ رو از طریق user_id انجام میده، میخوام که سرچ رو بر اساس نام کاربرها باشه.چیکار بکنم.

     public function another_fetch_data(Request $request)
        {
            if ($request->ajax()) {
                $sort_by = $request->get('sortby');
                $sort_type = $request->get('sorttype');
                $query = $request->get('query');
                $query = str_replace(" ", "%", $query);
                $data = Sc::orderby($sort_by, $sort_type)
                    ->where('id', 'like', '%' . $query . '%')
                    ->orwhere('user_id', 'like', '%' . $query . '%')
                    ->orwhere('classroom_id', 'like', '%' . $query . '%')
                    ->orwhere('created_at', 'like', '%' . $query . '%')
                    ->paginate(2);
                return view('fl.ptest', compact('data'))->render();
            }
        }

     

×
×
  • جدید...