با سلام.دوستان میشه بگین با توجه به کدها کجای کار اشتباه کردم که عملیات delete , update روی کدها اعمال نمیشه..اولین باره به این مشکل برمیخورم....
<?php
namespace App\Http\Controllers\Admin;
use App\Drog;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class DrugController extends Controller
{
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
$drugs = Drog::query();
if ($keyword = request('search')) {
$drugs->where('title', 'LIKE', "%{$keyword}%")->orWhere('id', "%{$keyword}%");
}
$drugs = $drugs->latest()->paginate(15);
return view('admin.drugs.alldrug',compact('drugs'));
}
/**
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
return view('admin.drugs.create');
}
/**
* Store a newly created resource in storage.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$validateData = $request->validate([
'title'=>['required','string'],
'description'=>['required','string'],
]);
auth()->user()->drug()->create($validateData);
return redirect(route('admin.drugs.index'));
}
/**
* Show the form for editing the specified resource.
*
* @param Drog $drog
* @return void
*/
public function edit(Drog $drog)
{
return view('admin.drugs.edit',compact('drog'));
}
/**
* Update the specified resource in storage.
*
* @param Request $request
* @param Drog $drog
* @return void
*/
public function update(Request $request, Drog $drog)
{
$validateData = $request->validate([
'title'=>['required','string'],
'description'=>['required','string'],
]);
$drog->update($validateData);
return redirect(route('admin.drugs.index'));
}
/**
* Remove the specified resource from storage.
*
* @param Drog $drog
* @return Response
* @throws \Exception
*/
public function destroy(Drog $drog)
{
$drog->delete();
return back();
}
}
کدهای Route
<?php
use Illuminate\Support\Facades\Route;
Route::namespace('Admin')->group(function (){
Route::get('/','PanelController@index');
Route::resource('users','UserController');
Route::resource('drugs','DrugController')->except(['show']);
});
view :
@component('admin.layouts.content',['title'=>'داروها'])
@slot('breadcrumb')
<li class="breadcrumb-item"><a href="/admin">میز کار</a></li>
<li class="breadcrumb-item">داروها</li>
@endslot
<div class="card">
<div class="card-header">
<h3 class="card-title">لیست داروها</h3>
<div class="card-tools d-flex">
<form action="">
<div class="input-group input-group-sm">
<input type="text" name="search" class="form-control float-right" placeholder="جستجو">
<div class="input-group-append">
<button type="submit" class="btn btn-default"><i class="fa fa-search"></i></button>
</div>
</div>
</form>
<div class="btn-group-sm mr-1">
<a href="{{route('admin.drugs.create')}}" class="btn btn-sm btn-warning mr-2">ایجاد داروی جدید</a>
</div>
</div>
</div>
<!-- /.card-header -->
<div class="card-body table-responsive p-0">
<table class="table table-hover table-bordered">
<tbody>
<tr>
<th>ردیف</th>
<th>نام دارو</th>
<th>توضیحات</th>
<th>تاریخ</th>
<th>تصویر</th>
<th>عملیات</th>
</tr>
@foreach($drugs as $drug)
<tr>
<td>{{$drug->id}}</td>
<td>{{$drug->title}}</td>
<td>{{$drug->description}}</td>
<td>{{$drug->created_at}}</td>
<td>{{$drug->imgUrl}}</td>
<td class="d-flex">
<a href="{{ route('admin.drugs.edit' , $drug->id) }}" class="btn btn-sm btn-success ml-2 mt-1">ویرایش</a>
<form method="POST" action="{{ route('admin.drugs.destroy' , $drug->id) }}">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-sm btn-danger mt-1">حذف</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<!-- /.card-body -->
<div class="card-footer">
{{$drugs->render()}}
</div>
</div>
@endcomponent
کدهای ویو ادیت
@component('admin.layouts.content',['title'=>'ویرایش داروی انتخابی'])
@slot('breadcrumb')
<li class="breadcrumb-item"><a href="{{route('admin.')}}">میز کار</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.drugs.index')}}">داروها</a></li>
<li class="breadcrumb-item">ویرایش داروی انتخابی</li>
@endslot
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">ویرایش داروی انتخابی</h4>
</div>
<!-- /.card-header -->
<!-- form start -->
@include('admin.layouts.errors')
<form class="form-horizontal" action="{{route('admin.drugs.update',['drugs',$drog->id])}}" method="post" enctype="multipart/form-data">
@csrf
@method('patch')
<div class="card-body">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">نام دارو : </label>
<div class="col-sm-10">
<input type="text" value="{{old('title',$drog->title)}}" name="title" class="form-control" id="title" placeholder="نام را وارد کنید">
</div>
</div>
<div class="form-group">
<label for="description" class="col-sm-2 control-label">توضیحات دارو : </label>
<div class="col-sm-10">
<textarea rows="10" name="description" class="form-control" id="description" placeholder="توضیحات دارو را وارد کنید">{{old('description',$drog->description)}}</textarea>
</div>
</div>
<div class="form-group">
<label for="img" class="col-sm-2 control-label">انتخاب تصویر دارو : </label>
<div class="col-sm-10">
<input value="{{old('imgUrl',$drog->imgUrl)}}" type="file" name="img" class="form-control" id="img">
</div>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-info">ایجاد</button>
<button type="submit" class="btn btn-default float-left">لغو</button>
</div>
<!-- /.card-footer -->
</form>
</div>
@endcomponent
کدهای ویو crate
@component('admin.layouts.content',['title'=>'ایجاد داروی جدید'])
@slot('breadcrumb')
<li class="breadcrumb-item"><a href="{{route('admin.')}}">میز کار</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.drugs.index')}}">داروها</a></li>
<li class="breadcrumb-item">ایجاد داروی جدید</li>
@endslot
<div class="card card-info">
<div class="card-header">
<h4 class="card-title">ایجاد داروی جدید</h4>
</div>
<!-- /.card-header -->
<!-- form start -->
@include('admin.layouts.errors')
<form class="form-horizontal" action="{{route('admin.drugs.store')}}" method="post" enctype="multipart/form-data">
@csrf
@method('POST')
<div class="card-body">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">نام دارو : </label>
<div class="col-sm-10">
<input value="{{old('title')}}" type="text" name="title" class="form-control" id="title" placeholder="نام را وارد کنید">
</div>
</div>
<div class="form-group">
<label for="description" class="col-sm-2 control-label">توضیحات دارو : </label>
<div class="col-sm-10">
<textarea rows="10" name="description" class="form-control" id="description" placeholder="توضیحات دارو را وارد کنید">{{old('description')}}</textarea>
</div>
</div>
<div class="form-group">
<label for="img" class="col-sm-2 control-label">انتخاب تصویر دارو : </label>
<div class="col-sm-10">
<input value="{{old('imgUrl')}}" type="file" name="img" class="form-control" id="img">
</div>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-info">ایجاد</button>
<a href="{{route('admin.drugs.index')}}" type="submit" class="btn btn-default float-left">لغو</a>
</div>
<!-- /.card-footer -->
</form>
</div>
@endcomponent
توی صفحه ی ادیت این شکلی بذارین
{{route('admin.drugs.update',$drog)}}
چون توی روت مدل بایندینگ باید به صورت مفرد ارسال کنید
یا به این شکل
route('admin.drugs.update',['drug',$drog->id])
سلام، احتمال زیاد مشکل همون ولیدیشن شما هست
$validateData = $request->validate([
'title'=>'required|string',
'description'=>'required|string',
]);
تست کنید
@coaradsupp
ممنونم..تست کردم ولی درست نشد.در صفحه ادیت ارور Missing required parameters for [Route: admin.drugs.update]
میده
به کدهای ویو ادیت دقت کنید
route('admin.drugs.update',['drugs',$drog->id])
متد route ۲ آرگومان میگیره و آرگومان دوم باید یه آرایه باشه .. که شما آرایه رو صحیح بهش پاس ندادید
route('admin.drugs.update',['drugs' => $drog->id])
@ali.bayat
در صفحه ادیت ارور Missing required parameters for [Route: admin.drugs.update]
میده
توی صفحه ی ادیت این شکلی بذارین
{{route('admin.drugs.update',$drog)}}
چون توی روت مدل بایندینگ باید به صورت مفرد ارسال کنید
یا به این شکل
route('admin.drugs.update',['drug',$drog->id])
@coaradsupp
ممنونم مشکل missing parameter حل شد ولی نمیدونم چرا عملیات دیلیت اجرا نمیشه و موقع ویرایش value نشان داده نمیشه داخل input😣😣
برای ویرایش به این شکل بنویسید تست کنید
$drog->update($request->only('title','description'));
برای روت هاتونم چون دارین از ریسورس ارستفاده میکنید بهتره کانونشن لاراول رو رعایت کنید تا دردسر نشه به این شکل بنویسید
{{route('admin.drugs.update',$drog)}}
یا به این شکل
route('admin.drugs.update',['drug',$drog->id])
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟