reza ataei
5 سال پیش توسط reza ataei مطرح شد
9 پاسخ

عدم اعمال عملیات delete و update

با سلام.دوستان میشه بگین با توجه به کدها کجای کار اشتباه کردم که عملیات 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

ثبت پرسش جدید
coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش آپدیت شد
0

توی صفحه ی ادیت این شکلی بذارین

{{route('admin.drugs.update',$drog)}}

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

یا به این شکل

route('admin.drugs.update',['drug',$drog->id])

coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

سلام، احتمال زیاد مشکل همون ولیدیشن شما هست

$validateData = $request->validate([
            'title'=>'required|string',
            'description'=>'required|string',
        ]);

تست کنید


reza ataei
تخصص : در حال یادگیری.....
@rezaataei54 5 سال پیش مطرح شد
0

@coaradsupp
ممنونم..تست کردم ولی درست نشد.در صفحه ادیت ارور Missing required parameters for [Route: admin.drugs.update]
میده


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

به کدهای ویو ادیت دقت کنید

route('admin.drugs.update',['drugs',$drog->id])

متد route ۲ آرگومان میگیره و آرگومان دوم باید یه آرایه باشه .. که شما آرایه رو صحیح بهش پاس ندادید

route('admin.drugs.update',['drugs' => $drog->id])

reza ataei
تخصص : در حال یادگیری.....
@rezaataei54 5 سال پیش مطرح شد
0

@ali.bayat
در صفحه ادیت ارور Missing required parameters for [Route: admin.drugs.update]
میده


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش آپدیت شد
0

توی صفحه ی ادیت این شکلی بذارین

{{route('admin.drugs.update',$drog)}}

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

یا به این شکل

route('admin.drugs.update',['drug',$drog->id])

reza ataei
تخصص : در حال یادگیری.....
@rezaataei54 5 سال پیش مطرح شد
0

@coaradsupp
ممنونم مشکل missing parameter حل شد ولی نمیدونم چرا عملیات دیلیت اجرا نمیشه و موقع ویرایش value نشان داده نمیشه داخل input😣😣


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
0

متوجه نشدم، کد قرار بدین و بیشتر توضیح بدین لطفا


reza ataei
تخصص : در حال یادگیری.....
@rezaataei54 5 سال پیش مطرح شد
0

@coaradsupp
تمام کدها رو بالا گذاشتم ولی عملیات ویرایش و دیلیت اجرا نمیشن.


coarad supp
تخصص : برنامه نویس لاراول
@coaradsupp 5 سال پیش مطرح شد
1

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

$drog->update($request->only('title','description'));

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

{{route('admin.drugs.update',$drog)}}

یا به این شکل

route('admin.drugs.update',['drug',$drog->id])

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام