هاست لاراول با پشتیبانی 24 ساعته و امکانات کامل از مدیرهاست
HASSSSAN
-
تعداد ارسال ها
13 -
تاریخ عضویت
-
آخرین بازدید
پست ارسال شده توسط HASSSSAN
-
-
در 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'); }
حال کاربر به جز صفحه اصلی سایت، به تمامی صفحات سایت بدون لاگین دسترسی ندارد.
امیدوارم که این پاسخ مشکل شما را حل کرده باشد.
خیلی خیلی ممنونم، مشکلم حل شد.
-
در 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'); }
حال کاربر به جز صفحه اصلی سایت، به تمامی صفحات سایت بدون لاگین دسترسی ندارد.
امیدوارم که این پاسخ مشکل شما را حل کرده باشد.
خیلی خیلی ممنونم، مشکلم حل شد.
-
سلام دوستان
من میخوام که ارسال و دریافت پیام ها از طریق 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>
-
سلام دوستان
من میخوام که کاربر برای دسترسی به هر صفحه از سایت حتما لاگین کرده باشه
مثلا اگه بخواد به صفحه ای از سایت بره و لاگین نکرده باشه به صورت خودکار به صفحه ی لاگین ریدایرکت بشه
ممن.ن میشم راهنمایی بکنید.
-
در 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} ] });
این کار رو هم کردم، درست نشد.
-
در 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;
-
در 12 ساعت قبل، saber گفته است :احتمال زیاد مشکل از متد کنترلر هست که اطلاعات رو باید به شکل json برگردونه
کدهایی رو که در کنترلر برای دریافت لیست اعضا نوشتید قرار بدید ببینیم چی نوشتید
کد ها رو قرار دادم. پیشاپیش ممنون از کمکتون
-
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>
-
سلام
من میخوام برای نمایش لیست اعضای یه کلاس از 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>
اگر قسمت دیگه ای از کد هم نیازه لطفا بگید که بذارم.
پیشاپیش از هر کمکی تشکر میشود
-
خیلی ممنون از لطفتون، درست شد.
-
سلام
اگر کاربر بخواد یه کلاس بسازه اطلاعات رو ازش میگیرم بعد از ساخت کلاس به صفحهی اصلی برمیگردیم. همه چیز با موفقیت انجام میشه فقط وقتی برمیگردیم به صفحه ی اصلی ادرس بار مرور گر ادرس اون صفحه رو نمیزنه! آدرس همون صحفه ی ساخت کلاس رو میزنه! و اگر کاربر ریفرش بکنه مثلا، با مشکل رو به رو میشه.
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
این باشه، این یکی رو نمایش میده
-
سلام. من یه جدول دارم که لیست اعضای یه کلاس رو نگه میداره، توی این جدول فقط 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(); } }
مشکل در مورد policy و @can.
در رفع مشکلات و سوالات عمومی لاراول Laravel
ارسال شده در · Report reply
سلام، یه پروژهی ساده دارم با دوتا کاربر، یه دکمه هست که میخوام فقط کاربر با ایدی 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:
دکمه رو اصلا نشون نمیده ولی اگه @cannot استفاده کنم دکمه رو نشون میده!