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