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&amp;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">&times;</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']);
    }
}


如果有問題都可以在下方討論或者寄信給我唷~

留言

這個網誌中的熱門文章

網頁入門教材目錄

什麼是HTML?

網頁是怎麼運作的呢?