এই লেসনে User details page দেখানো এবং Category এর List View, Category Insert, Update, Delete করা দেখানো হয়েছে।
Routes:
Route::resource('categories', 'CategoriesController', ['except' => ['show'] ] );
UsersController:
namespace App\Http\Controllers;
use App\Group;
use App\Http\Requests\CreateUserRequest;
use App\Http\Requests\UpdateUserRequest;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class UsersController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$this->data['users'] = User::all();
return view('users.users', $this->data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->data['groups'] = Group::arrayForSelect();
$this->data['mode'] = 'create';
$this->data['headline'] = 'Add New User';
return view('users.form', $this->data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CreateUserRequest $request)
{
$formData = $request->all();
if( User::create($formData) ) {
Session::flash('message', 'User Created Successfully');
}
return redirect()->to('users');
}
public function show($id)
{
$this->data['user'] = User::find($id);
return view('users.show', $this->data);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$this->data['user'] = User::findOrFail($id);
$this->data['groups'] = Group::arrayForSelect();
$this->data['mode'] = 'edit';
$this->data['headline'] = 'Update Information';
return view('users.form', $this->data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(UpdateUserRequest $request, $id)
{
$data = $request->all();
$user = User::find($id);
$user->group_id = $data['group_id'];
$user->name = $data['name'];
$user->email = $data['email'];
$user->phone = $data['phone'];
$user->address = $data['address'];
if( $user->save() ) {
Session::flash('message', 'User Updated Successfully');
}
return redirect()->to('users');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
if( User::find($id)->delete() ) {
Session::flash('message', 'User Deleted Successfully');
}
return redirect()->to('users');
}
}
users/show.blade.php
@extends('layout.main')
@section('main_content')
<div class="row clearfix page_header">
<div class="col-md-4">
<a class="btn btn-primary" href="{{ route('users.index') }}"> <i class="fa fa-arrow-left" aria-hidden="true"></i> Back </a>
</div>
<div class="col-md-8 text-right">
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Sale </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Purchase </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Payment </a>
<a class="btn btn-info" href="{{ url('users/create') }}"> <i class="fa fa-plus"></i> New Receipt </a>
</div>
</div>
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary"> {{ $user->name }} </h6>
</div>
<div class="card-body">
<div class="row clearfix justify-content-md-center">
<div class="col-md-8">
<table class="table table-borderless table-striped">
<tr>
<th class="text-right">Group :</th>
<td> {{ $user->group->title }} </td>
</tr>
<tr>
<th class="text-right">Name : </th>
<td> {{ $user->name }} </td>
</tr>
<tr>
<th class="text-right">Eamil : </th>
<td> {{ $user->email }} </td>
</tr>
<tr>
<th class="text-right">Phone : </th>
<td> {{ $user->phone }} </td>
</tr>
<tr>
<th class="text-right">Address : </th>
<td> {{ $user->address }} </td>
</tr>
</table>
</div>
</div>
</div>
</div>
@stop
CategoriesController:
namespace App\Http\Controllers;
use App\Category;
use App\Http\Requests\CategoryRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
class CategoriesController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$this->data['categories'] = Category::all();
return view('category.categories', $this->data);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$this->data['headline'] = "Add New Category";
$this->data['mode'] = 'create';
return view('category.form', $this->data);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(CategoryRequest $request)
{
$formData = $request->all();
if( Category::create($formData) ) {
Session::flash('message', $formData['title'] . ' Added Successfully');
}
return redirect()->to('categories');
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$this->data['category'] = Category::findOrFail($id);
$this->data['mode'] = 'edit';
$this->data['headline'] = 'Update Category';
return view('category.form', $this->data);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(CategoryRequest $request, $id)
{
$category = Category::find($id);
$category->title = $request->get('title');
if( $category->save() ) {
Session::flash('message', 'Category Updated Successfully');
}
return redirect()->to('categories');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
if( Category::find($id)->delete() ) {
Session::flash('message', 'Category Deleted Successfully');
}
return redirect()->to('categories');
}
}
CategoryRequest:
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class CategoryRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'string|required'
];
}
}
category/categories.blade.php
@extends('layout.main')
@section('main_content')
<div class="row clearfix page_header">
<div class="col-md-6">
<h2> Categories </h2>
</div>
<div class="col-md-6 text-right">
<a class="btn btn-info" href="{{ route('categories.create') }}"> <i class="fa fa-plus"></i> New Category </a>
</div>
</div>
<!-- DataTales Example -->
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">Categories</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
<thead>
<tr>
<th>ID</th>
<th>Title</th>
<th class="text-right">Actions</th>
</tr>
</thead>
<tfoot>
<tr>
<th>ID</th>
<th>Title</th>
<th class="text-right">Actions</th>
</tr>
</tfoot>
<tbody>
@foreach ($categories as $category)
<tr>
<td> {{ $category->id }} </td>
<td> {{ $category->title }} </td>
<td class="text-right">
<form method="POST" action=" {{ route('categories.destroy', ['category' => $category->id]) }} ">
<a class="btn btn-primary btn-sm" href="{{ route('categories.edit', ['category' => $category->id]) }}">
<i class="fa fa-edit"></i>
</a>
@csrf
@method('DELETE')
<button onclick="return confirm('Are you sure?')" type="submit" class="btn btn-danger btn-sm">
<i class="fa fa-trash"></i>
</button>
</form>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@stop
category/form.blade.php
@extends('layout.main')
@section('main_content')
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<h2> {{ $headline }} </h2>
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">{{ $headline }}</h6>
</div>
<div class="card-body">
<div class="row justify-content-md-center">
<div class="col-md-8">
@if($mode == 'edit')
{!! Form::model($category, [ 'route' => ['categories.update', $category->id], 'method' => 'put' ]) !!}
@else
{!! Form::open([ 'route' => 'categories.store', 'method' => 'post' ]) !!}
@endif
<div class="form-group row">
<label for="title" class="col-sm-3 col-form-label">Title <span class="text-danger">*</span> </label>
<div class="col-sm-9">
{{ Form::text('title', NULL, [ 'class'=>'form-control', 'id' => 'title', 'placeholder' => 'Title' ]) }}
</div>
</div>
<div class="mt-4 text-right">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
</div>
@stop