前言:之前写了二篇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注意事项:

  1. 访问 laravel 出现 Parse error: syntax error, unexpected '?',说明php版本不适用当前laravel框架版本
  2. 视图文件是以xxxx.blade.php为后缀命名

操作网址:

laravel中文文档:https://learnku.com/docs/laravel/6.x

laravel学习之旅的更多相关文章

  1. Laravel学习之旅(三)

    视图 一.怎么新建视图: 1.视图默认存放路径:resources/views: 2.laravel模板支持原生的PHP,直接可以在resources/views新建一个PHP文件,例如: index ...

  2. Laravel学习之旅(二)

    控制器 一.怎么编写控制器? 1.控制器文件存放路径:app\Http\Controllers: 2.命名规范如:TestController.php 3.完整的控制器例子如下: <?php n ...

  3. Laravel学习之旅(一)

    路由 1.简介:简单的说就是将用户的请求转发给相应的程序进行处理: 2.作用:就是建立url和程序之间的映射. 3.请求类型:get.post.put.patch.delete 相比于thinkphp ...

  4. WCF学习之旅—第三个示例之四(三十)

           上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九)   ...

  5. Hadoop学习之旅二:HDFS

    本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...

  6. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  7. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  8. WCF学习之旅—WCF服务部署到IIS7.5(九)

    上接   WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...

  9. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

随机推荐

  1. C#开发BIMFACE系列22 服务端API之获取模型数据7:获取多个模型的楼层信息

    系列目录     [已更新最新开发文章,点击查看详细] 在<C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息>中介绍获取单个模型的所有楼层信息.某些场景下 ...

  2. Jmeter 之 逻辑控制器 if 控制器

    最近工作不忙,利用空闲时间整理了下Jmeter的相关知识,下面给大家分享下Jmeter中 如果(if)控制的使用和应用. 如下图:线程组 > 添加 > 逻辑控制器 > 如果 (if) ...

  3. 锁和synchronized

    锁的常见概念 互斥: 同一时刻只有一个线程执行 临界区:一段需要互斥执行的代码 细粒度锁: 用不同的锁对受保护资源进行精细化管理. 细粒度锁可以提高并行度,是性能优化的一个重要手段 死锁 :一组互相竞 ...

  4. Pandas Python For Data Science

  5. 十天快速入门Python

    课程导学 001 课程定位和目标 002 课程导学 第一部分 Python快速入门 第1天 Python基本语法元素 003 Python基本语法元素 004 程序设计基本方法 005 Python开 ...

  6. FreeSql (二十)多表查询 WhereCascade

    WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseCo ...

  7. jinfo Java配置信息工具

    jinfo(Configuration info for Java) jinfo的作用是实时地查看和调整虚拟机各项参数. jinfo 命令格式: jinfo [ option ] pid pid是虚拟 ...

  8. 【学习笔记】python3核心技术与实践--如何逐步突破,成为python高手

    众所周知,Facebook 的主流语言是 Hack(PHP 的进化版本).不过,我敢拍着胸脯说,就刚入职的工程师而言,100 个里至少有 95 个,以前都从未用过 Hack 或者 PHP.但是,这些人 ...

  9. caffe学习一:ubuntu16.04下跑Faster R-CNN demo (基于caffe). (亲测有效,记录经历两天的吐血经历)

    兜兜转转,兜兜转转; 一次有一次,这次终于把Faster R-CNN 跑通了. 重要提示1:在开始跑Faster R-CNN之前一定要搞清楚用的是Python2 还是Python3. 不然你会无限次陷 ...

  10. Linux入门基础之 下

    八.Linux 管道.重定向及文本处理 8.1.Linux 多命令协作:管道及重定向 8.1.1 开源文化 开源文化的核心理念之一就是不要重复发明轮子,很多的开源软件都是现有软件.代码.功能的重新组合 ...