laravel crud


HELP FROM: w3programmers

 

লারাভেল crud system করতে প্রথমে controller তৈরি করতে হবে।এজন্য CMD

php artisan make:controller UserController –resource  রান করাতে হবে। তখন controller এ UserController নামে ফাইল তৈরি হবে। এখন routes.php তে user page এর জন্য route দিতে হবে।

Route::resource('users', 'UserController');

এখন user page এর জন্য মেনু দিতে হবে।এজন্য resources/views/layouts/app.blade.php তে গিয়ে  Users Menu টি যুক্ত করতে  <li class="nav-item"><a class="nav-link" href="{{ url('/users') }}">Users</a></li> এই কোড টুকু দিতে হবে।

এখন view folder এর মধ্যে ফাইল তৈরি করতে হবে। এজন্য  user ফোল্ডার তৈরি করে এর মধ্যে all.blade.php file বানাব। এবং সেখানে কোড লিখতে হবে।

@extends('layouts.app')
@section('content')
class="container">
@if(session()->has('status'))

class="alert alert-info">

{{  session()->get('status') }}

 

@endif
class="panel panel-default">
class="panel-body">
@if (count($users))
class="table-responsive">
class=”table table-bordered”>

Username

Email

Created On

Last Updated

Action

 

 

@foreach($users as $user)

{{ $user->name }}

{{ $user->email }}

{{ $user->created_at->format('m-d-Y') }}

{{ $user->updated_at->format('m-d-Y') }}

"{{ route('users.destroy', $user->id) }}"method="POST"style="display:inline-block">
{{ csrf_field() }}
{{ method_field('DELETE') }}
class="btn btn-danger btn-xs">
DELETE

 

 

@endforeach

 

 

 

class="text-center">
{{ $users->links() }}

 

@else
<p class="alert alert-info">
No Listing Found
</p>
@endif
</div>
</div>
</div>
@endsection
user list দেখানোর জন্য আমাদের view রেডি, এখন UserController.php file এ আমাদেরকে তিন জায়গায় পরিবর্তন করতে হবে। প্রথমে file টির শুরুর দিকে use App\User; এই namespace টি use করতে হবে , দ্বিতীয়ত একটি contstructor function তৈরী করতে হবে , এবং সেখানে আমরা $this->middleware('auth'); এই middlewear টি দিবো , যেন কেও সরাসরি user list access না পায়। সর্বশেষ index() function এ নিচের মতো করে class এবং view file গুলো ব্যবহার করতে হবে।
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$users = User::latest()->paginate(5);
return view('users.all', compact('users'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
}
/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
CREATE:
এখন add user button এ ক্লিক করলে খালি পেজ  আসবে। এজন্য এখানে কোড লিখতে হবে। form এর জন্য কোড লিখতে আমরা লারভেল Laravel Collective package ব্যবহার করবো। Laravel Collective Install করার জন্য
composer require "laravelcollective/html":"^5.6.0"  এই command টি রান করব।
এবার resources/views/users ফোল্ডারের  মধ্যে create.blade.php ফাইল টি তৈরী  করে
@extends('layouts.app')
@section('content')

class="container">
@if(session()->has('status'))

class="alert alert-info">

{{  session()->get('status') }}

 

@endif

class="col-sm-6 col-sm-offset-3">

class="panel panel-default">

class="panel-heading">
Add User

 

class="panel-body">
{{ Form::open(['url' => route('users.store'), 'method' => 'POST' ]) }}
@include('users._form')
{{ Form::close() }}

 

</div>
</div>
</div>
@endsection
কোড টুকু লিখতে হবে।
এখানে উপরের কোডে, আমরা _form.blade.php ফাইল include করেছি। আমি এই কাজ করেছি, যাতে আমরা create এবং update উভয় কাজই একই form ব্যবহার করে করতে পারি।
 এখন  _form.blade.php view ফাইল এ এবং নিম্নোক্ত কোডটি লিখতে হবে।
@if (isset($errors) && (count($errors) > 0))

class="alert alert-danger">

@foreach ($errors->all() as $error)

  • {{ $error }}

 

@endforeach

 

@endif

class="form-group">
{{ Form::label('name', 'Name') }} *
{{ Form::text('name', null, ['class' => 'form-control', 'id' => 'name', 'required' => 'required']) }}

 

class="form-group">
{{ Form::label('email', 'Email') }} *
{{ Form::email('email', null, ['class' => 'form-control', 'id' => 'email']) }}

 

class="form-group">
{{ Form::label('password', 'Password') }} *
{{ Form::password('password', ['class' => 'form-control', 'id' => 'password']) }}

 

class="form-group">
{{ Form::submit('Submit', ['class' => 'btn btn-success']) }}

 

এবার  UserController.php এ তে create ফাংশনে  view তে file path দিতে  হবে।
public function create()
{
//
return view('users.create');
}
পুরো code টি হল
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Validator;
use Hash;
use Illuminate\Http\Request;
use App\User;
class UserController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
$users = User::latest()->paginate(5);
return view('users.all', compact('users'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
return view('users.create');
}
/**
* Store a newly created resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
$validatedData =  Validator::make($request->all(),[
'name' => 'required|max:40',
'email' => 'required|email|unique:users',
'password' => 'required|min:6'
]);
if ($validatedData->fails()) {
return redirect('users/create')
->withErrors($validator)
->withInput();
}
$inputs=[
'name' => $request['name'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
];
if(User::create($inputs)){
return  redirect('users');
}
}
/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
READ:
খন আমরা দেখবো প্রত্যেকটি User কে আলাদা ভাবে কিভাবে দেখানো যায় সেই ব্যবস্থা। চলুন প্রথমে view.blade.php file এ নিচের কোডটি লিখে ফেলি।
@extends('layouts.app')
@section('content')

class="container">
@if(session()->has('status'))

class="alert alert-info">

{{  session()->get('status') }}

 

@endif

class="col-sm-6 col-sm-offset-3">

class="panel panel-default">

class="panel-heading">
User Details

 

class="panel-body">

class="form-horizontal">

class="form-group">
class="col-sm-3 control-label" for="name">Name

class="col-sm-9">

class="form-control">{{ $user->name }}

 

 

</div>

class="form-group">
class="col-sm-3 control-label" for="name">Email

class="col-sm-9">

class="form-control">{{ $user->email }}

 

 

</div>

class="form-group">
class="col-sm-3 control-label" for="name">Password

class="col-sm-9">

class="form-control">********

 

 

</div>

class="form-group">
class="col-sm-3 control-label" for="name">Created On

class="col-sm-9">

class="form-control">{{ $user->created_at->format('m-d-Y') }}

 

 

</div>

class="form-group">
class="col-sm-3 control-label" for="name">Last Updated

class="col-sm-9">

class="form-control">{{ $user->created_at->format('m-d-Y') }}

 

 

</div>

class="form-group">

class="col-sm-4 col-sm-offset-4">

 

</div>
</div>
</div>
</div>
</div>
</div>
@endsection

এখন আমাদের view.blade.php file এর কাজ শেষ,এবার UserController.php এ আমাদের show ফাংশনকে নিচের মতো করে Modify করব।

1
2
3
4
5
6
7
8
9
10
11
12
/**
* Display the specified resource.
*
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
$user = User::find($id);
return view('users.view', compact('user'));
}

UPDATE

READ এর কাজ শেষ , এখন আমরা দেখবো প্রত্যেকটি User কে আলাদা ভাবে কিভাবে edit করা যায় সেই ব্যবস্থা। চলুন প্রথমে update.blade.php file এ নিচের কোডটি লিখে ফেলি।

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@extends('layouts.app')
@section('content')

class="container">
    @if(session()->has('status'))

        

class="alert alert-info">

            {{  session()->get('status') }}

        

 

    @endif

    

class="col-sm-6 col-sm-offset-3">

        

class="panel panel-default">

            

class="panel-heading">
                Add User
            

 

            

class="panel-body">
                
                {{ Form::model($user, ['url' => route('users.update',$user->id), 'method' => 'PUT' ]) }}
                    @include('users._form')
                {{ Form::close() }}
            

 

        </div>
    </div>
</div>
@endsection

এবার UserController.php এ আমাদের edit ফাংশনকে নিচের মতো করে Modify করব।

1
2
3
4
5
6
7
8
9
10
11
12
/**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
        $user = User::find($id);
        return view('users.update', compact('user'));
    }

এবার আপনি অনায়াসেই যেকোনো User এর পাশেই edit button এ click করলে আপনি সংশ্লিষ্ট User কে update করার সুযোগ পাবেন:। নিচের ছবিটি লক্ষ্য করুন:

Laravel User Update Option with Crud

Laravel User Update Option with Crud

এবার ফর্ম টি submit করলে user যেন আপডেট হয় সেই ব্যবস্থা করার পালা , আর এর জন্য আপনাকে update() Method এ নিচের মতো করে মোডিফাই করতে হবে।

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* Update the specified resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @param  int  $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$validatedData =  Validator::make($request->all(),[
'name' => 'required|max:40',
'email' => 'required|email',
'password' => 'required|min:6'
]);
if ($validatedData->fails()) {
return redirect('users/create')
->withErrors($validatedData)
->withInput();
}
$inputs=[
'name' => $request['name'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
];
User::find($id)->update($inputs);
return redirect("users");
}

DELETE

Update এর কাজ শেষ , এখন আমরা দেখবো কিভাবে User কে delete করা যায় সেই ব্যবস্থা। অবশ্য এর জন্য আপনাকে view তে কোনো কাজ করতে হবে না , শুধু UserController class এর destroy() Method এ নিচের মতো করে Modify করে দিলেই হবে।

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        User::find($id)->delete();
        return redirect("users");
    
    }

এবার চলুন UserController class এর সম্পূর্ণ কোড এক সাথে দেখা যাক :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Validator;
use Hash;
use Illuminate\Http\Request;
use App\User;
class UserController extends Controller
{
     public function __construct()
    {
        $this->middleware('auth');
    }
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $users = User::latest()->paginate(5);
        return view('users.all', compact('users'));
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
          return view('users.create');
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
   
     $validatedData =  Validator::make($request->all(),[
        'name' => 'required|max:40',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:6'
    ]);
          if ($validatedData->fails()) {
            return redirect('users/create')
                        ->withErrors($validatedData)
                        ->withInput();
        }
        $inputs=[
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => Hash::make($request['password']),
        ];
       if(User::create($inputs)){
        //return  redirect('users');
        return redirect("users");
      }
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
         $user = User::find($id);
         return view('users.view', compact('user'));
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
        $user = User::find($id);
        return view('users.update', compact('user'));
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
    
    $validatedData =  Validator::make($request->all(),[
        'name' => 'required|max:40',
        'email' => 'required|email',
        'password' => 'required|min:6'
    ]);
          if ($validatedData->fails()) {
            return redirect('users/create')
                        ->withErrors($validatedData)
                        ->withInput();
        }
    $inputs=[
            'name' => $request['name'],
            'email' => $request['email'],
            'password' => Hash::make($request['password']),
        ];
    User::find($id)->update($inputs);
    return redirect("users");
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        User::find($id)->delete();
        return redirect("users");
    
    }
}

Have any Question or Comment?

Leave a Reply

Your email address will not be published. Required fields are marked *




Calender

October 2020
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031