laravel入門 5 (完整筆記本範例)
views(home.blade.php)設定
<!doctype html> <html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Bootstrap CSS --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <!-- 引入google字體 --> <link href="https://fonts.googleapis.com/css?family=Lato:300,300i,400,400i,700,700i,900&subset=latin-ext" rel="stylesheet"> <style type="text/css"> body{ font-family: '微軟正黑體', 'Noto Sans TC', Helvetica, Arial, '黑體-繁', 'Heiti TC', '儷黑', 'LiHei', 'Microsoft JhengHei', sans-serif; } </style> <title>Note</title> </head> <body> <div class="container"> <div class="row"> <div class="col-12"> <h1 class="text-center mt-2">Note</h1> <input type="text" class="form-control mt-5" placeholder="標題" id="newTitle"> <textarea class="form-control mt-2" placeholder="內容" rows="3" id="newContent"></textarea> </div> <div class="col-12 text-right mt-2"> <button type="button" class="btn btn-primary" onclick="addItem()">新增</button> </div> <div class="col-12 mt-5"> <table class="table"> <thead class="thead-light"> <tr> <th width="200">標題</th> <th width="600">內容</th> <th>時間</th> <th style="min-width: 150px;">操作</th> </tr> </thead> <tbody> <!-- 把假資料刪除後 , 將後端資料帶入html裡面 --> @foreach ($data as $val) <tr> <td>{{$val->title}}</td> <td>{{$val->content}}</td> <th>{{$val->created_at}}</th> <td> <button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#exampleModal" onclick="getItem({{ $val->id }})">編輯</button> <button type="button" class="btn btn-danger" onclick="deleteItem({{ $val->id }})">刪除</button> </td> </tr> @endforeach </tbody> </table> </div> </div> </div> <!-- 編輯視窗 --> <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="exampleModalLabel"><b>編輯</b></h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <div class="form-group"> <label class="col-form-label">標題:</label> <input type="text" class="form-control" id='editTitle'> </div> <div class="form-group"> <label class="col-form-label">內容:</label> <textarea class="form-control" id='editContent'></textarea> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">關閉</button> <button type="button" class="btn btn-primary" onclick="editItem()">送出</button> </div> </div> </div> </div> <!-- Optional JavaScript --> <!-- jQuery first, then Popper.js, then Bootstrap JS --> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script> <!-- 載入Laravel的內建前端套件 ,現在目的是要載入Axios --> <script src="{{URL::asset('js/app.js')}}"></script> </body> </html> <script type="text/javascript"> function addItem() { //取得資料 var title = $('#newTitle').val(); var content = $('#newContent').val(); //檢查有沒有填寫資料 if (!title) { alert('請填寫標題'); return } if (!content) { alert('請填寫內容'); return } //傳送到後端 axios.post('/addItem', { title:title, content:content }) .then(function (response) { if (response.data.result == 'success') { //後端回傳過來是成功後,重整頁面 location.reload(); } }) .catch(function (error) { console.log(error); }); } function getItem(id) { //傳送到後端,並且取得資料 axios.post('/getItem', { id:id }) .then(function (response) { if (response.data.result == 'success') { $('#editTitle').val(response.data.data.title); $('#editContent').val(response.data.data.content); //使用一個 全域性的變數 ,來儲存要被編輯的ID , 等等真的要修改的時候直接取得 window.editId = response.data.data.id; } }) .catch(function (error) { console.log(error); }); } function editItem() { //傳送到後端,並且修改 axios.post('/editItem', { //取得要修改的資料 title : $('#editTitle').val(), content : $('#editContent').val(), //取得剛剛的ID id:window.editId }) .then(function (response) { if (response.data.result == 'success') { //後端回傳過來是成功後,重整頁面 location.reload(); } }) .catch(function (error) { console.log(error); }); } function deleteItem(id) { //js內建的詢問視窗 , 以免誤觸後刪除 var check = confirm("確定要刪除嗎 ?"); //如果點到確定後才會執行 if (check == true) { axios.post('/deleteItem', { id:id }) .then(function (response) { if (response.data.result == 'success') { //後端回傳過來是成功後,重整頁面 location.reload(); } }) .catch(function (error) { console.log(error); }); } } </script>
route(routes/web.php)設定
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
// Route::get('/', function () {
// return view('welcome');
// });
Route::get('/','NoteController@home');
//新增項目
Route::post('addItem','NoteController@addItem');
//取得項目
Route::post('getItem','NoteController@getItem');
//編輯項目
Route::post('editItem','NoteController@editItem');
//刪除項目
Route::post('deleteItem','NoteController@deleteItem');
Controllers(app/Controllers/NoteController.php)設定
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
//使用Item 這個model
use App\Item;
class NoteController extends Controller
{
public function home(Request $request)
{
//取得資料庫資料
$data = Item::select('id','title','content','created_at')
//日期新到舊做排序
->orderBy('created_at', 'desc')
//最後一定要寫get()來結尾 , 不然會出錯
->get();
//導向home.blade.php 並且帶上資料庫的資料
return view('home',['data'=>$data]);
}
//新增項目
public function addItem(Request $request)
{
//接收前端資料
$title = $request->input('title');
$content = $request->input('content');
//新增進資料庫
Item::insert([
//'資料庫欄位'=>資料
'title'=> $title,
'content'=> $content,
'created_at'=> NOW()
]);
//用json格式回傳結果
return response()->json(['result' => 'success']);
}
//取得項目
public function getItem(Request $request)
{
//接收前端資料
$id = $request->input('id');
//取得資料庫資料
$data = Item::select('id','title','content')
->where('id',$id)
//最後一定要寫get()來結尾 , 不然會出錯
->first();
//用json格式回傳結果
return response()->json(['result' => 'success','data' => $data]);
}
//更新項目
public function editItem(Request $request)
{
//接收前端資料
$id = $request->input('id');
$title = $request->input('title');
$content = $request->input('content');
//修改資料庫
Item::
where('id',$id)
->update([
//'資料庫欄位'=>資料
'title'=> $title,
'content'=> $content,
'updated_at'=> NOW()
]);
//用json格式回傳結果
return response()->json(['result' => 'success']);
}
public function deleteItem(Request $request)
{
//接收前端資料
$id = $request->input('id');
//修改資料庫的資料
Item::
where('id', '=', $id)
->delete();
//用json格式回傳結果
return response()->json(['result' => 'success']);
}
}
如果有問題都可以在下方討論或者寄信給我唷~
留言
張貼留言