laravel学习之旅
前言:之前写了二篇YII2.0的基本mvc操作,所以,打算laravel也来这一下
*安装现在一般都用composer安装,这里就不讲述了*
一、熟悉laravel
(1)如果看到下面这个页面,就说明你已经安装好框架了

(2)认识一下目录结构

二、mvc操作
*每次增加一个控制器与方法,都要增加路由*
\routes\web.php
Route::get('/', function () {
return view('welcome');
});
Route::get('/test', 'TestController@index');
Route::get('/test/add', 'TestController@add');
Route::post('/test/add', 'TestController@add');
Route::get('/test/saveshow/{a_id}', 'TestController@saveshow');
Route::post('/test/update', 'TestController@update');
(1)控制器(c)显示方法与接收方法
/** * 列表 * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index() { $model = new Article(); $condition = 'a_id>0'; $list = $model->getArticleStrsList($condition); return view('test.index',['list'=>$list]); } /** * 增加 * @param Request $request * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function add(Request $request){ $model = new Article(); if($request->isMethod('post')){ // 校验 $request->validate([ 'article_title' => 'required', 'author' => 'required', ]); // 进行数据操作 $article_title = $request->input('article_title',''); $author = $request->input('author',''); $insertData = array(); $insertData['article_title'] = $article_title; $insertData['author'] = $author; $insertData['article_content'] = ''; $model->addArticle($insertData); return redirect('test'); }else{ return view('test/add'); } } /** * 更新显示方法 * @param Request $request */ public function saveshow($a_id){ // form参数请求 $model = new Article(); $info = $model->getOneById(array('a_id'=>$a_id)); return view('test/saveshow',['info'=>$info]); } /** * 更新 * @param Request $request */ public function update(Request $request){ // form参数请求 $model = new Article(); if($request->isMethod('post')){ // 校验 $request->validate([ 'article_title' => 'required', 'author' => 'required', 'a_id'=>'required' ]); // 进行数据操作 $article_title = $request->input('article_title',''); $author = $request->input('author',''); $a_id = $request->input('a_id'); $updateData = array(); $updateData['article_title'] = $article_title; $updateData['author'] = $author; $updateData['article_content'] = ''; $model->editArticle($updateData,array('a_id'=>$a_id)); return redirect('test'); } }
(二)、模型(m),自己在原来的基础上封装了一下
<?php namespace App\Model; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class Article extends Model { public static $tableName = 'article'; /** * 获取商品列表 * @param $condition * @param string $field * @param int $page * @param string $order * @return mixed */ public function getArticleList($condition, $field = '*', $page = 0, $order = 'a_id desc'){ $list = DB::table(self::$tableName) ->where($condition) ->orderBy($order) ->get(); return $list; } /** * 获取商品列表(通过原生字符串方式) * @param $condition * @param string $field * @param int $page * @param string $order * @return mixed */ public function getArticleStrsList($condition, $field = '*', $offset = 0,$limit = 10, $order = 'a_id desc'){ $list = DB::table(self::$tableName) ->whereRaw($condition) ->orderByRaw($order) ->offset($offset) ->limit($limit) ->get(); return $list; } /** * 添加商品 * @param type $data * @return type */ public function addArticle($data) { return DB::table(self::$tableName)->insertGetId($data); } /** * 更新商品 * @param type $data * @param type $condition * @return type */ public function editArticle($data, $condition) { return DB::table(self::$tableName)->where($condition)->update($data); } /** * 删除商品 * @param array $condition 条件 * @return type */ public function delArticle($condition) { return DB::table(self::$tableName)->where($condition)->delete(); } /** * 根据条件查询一条商品 * * @param array $condition 条件 * @return array 一维数组 */ public function getOneById($condition) { return DB::table(self::$tableName)->where($condition)->first(); } /** * 根据获取总数 * @param $condition * @return mixed */ public function getCount($condition){ return DB::table(self::$tableName)->where($condition)->count(); } /** * 根据获取总数(通过原生字符串方式) * @param $condition * @return mixed */ public function getCountStrs($condition){ return DB::table(self::$tableName)->whereRaw($condition)->count(); } }
(三)视图(v),laravel下伪造跨站请求保护 CSRF,这个一定要加上
index.blade.php
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
<style>
.list{
width: 100%;
}
.list .l-l,.l-l-h{
width:100%;
text-align: center;
}
.l-l-h{
font-weight: bold;
}
.list .l-v,.l-h{
border: 1px solid #0b72b8;
display:inline-block;
width: 150px;
float:left;
padding: 0px;
margin: 0px;
text-align: center;
}
.l-h{
font-weight: bold;
}
.clear{ clear:both}
</style>
</head>
<body>
<div>
<a href="{{url('test/add')}}">添加</a>
</div>
<div class="list">
<div class="l-l-h">
<p class="l-h">
标题
</p>
<p class="l-h">
作者
</p>
<p class="l-h">
操作
</p>
<div class="clear"></div>
</div>
@foreach ($list as $key=>$value)
<div class="l-l">
<p class="l-v">
{{$value->article_title}}
</p>
<p class="l-v">
{{$value->author}}
</p>
<p class="l-v">
<a href="{{url('test/saveshow',['a_id'=>$value->a_id])}}">编辑</a>
</p>
<div class="clear"></div>
</div>
@endforeach
</div>
</body>
</html>
add.blade.php
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel学习之旅</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
<style>
p{
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<!-- /resources/views/post/add.blade.php -->
<h1>Create Post</h1>
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<!-- Create Post Form -->
<div>
<form action="{{url('test/add')}}" method="post">
{{--这里要写上token,一样要加上--}}
{{ csrf_field() }}
<p>
<input type="text" name="article_title" placeholder="标题"/>
</p>
<p>
<input type="text" name="author" placeholder="作者"/>
</p>
<p>
<input type="submit" value="提交"/>
</p>
</form>
</div>
</body>
</html>
saveshow.blade.php
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel学习之旅</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
<style>
p{
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<div>
<form action="{{url('test/update')}}" method="post">
{{--这里要写上token,一样要加上--}}
{{ csrf_field() }}
<input type="hidden" name="a_id" value="{{$info->a_id}}"/>
<p>
<input type="text" name="article_title" placeholder="标题" value="{{$info->article_title}}"/>
</p>
<p>
<input type="text" name="author" placeholder="作者" value="{{$info->author}}"/>
</p>
<p>
<input type="submit" value="提交"/>
</p>
</form>
</div>
</body>
</html>
laravel注意事项:
- 访问 laravel 出现 Parse error: syntax error, unexpected '?',说明php版本不适用当前laravel框架版本
- 视图文件是以xxxx.blade.php为后缀命名
操作网址:
laravel中文文档:https://learnku.com/docs/laravel/6.x

浙公网安备 33010602011771号