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
laravel学习之旅的更多相关文章
- Laravel学习之旅(三)
视图 一.怎么新建视图: 1.视图默认存放路径:resources/views: 2.laravel模板支持原生的PHP,直接可以在resources/views新建一个PHP文件,例如: index ...
- Laravel学习之旅(二)
控制器 一.怎么编写控制器? 1.控制器文件存放路径:app\Http\Controllers: 2.命名规范如:TestController.php 3.完整的控制器例子如下: <?php n ...
- Laravel学习之旅(一)
路由 1.简介:简单的说就是将用户的请求转发给相应的程序进行处理: 2.作用:就是建立url和程序之间的映射. 3.请求类型:get.post.put.patch.delete 相比于thinkphp ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- Hadoop学习之旅二:HDFS
本文基于Hadoop1.X 概述 分布式文件系统主要用来解决如下几个问题: 读写大文件 加速运算 对于某些体积巨大的文件,比如其大小超过了计算机文件系统所能存放的最大限制或者是其大小甚至超过了计算机整 ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—WCF服务部署到IIS7.5(九)
上接 WCF学习之旅—WCF寄宿前的准备(八) 四.WCF服务部署到IIS7.5 我们把WCF寄宿在IIS之上,在IIS中宿主一个服务的主要优点是在发生客户端请求时宿主进程会被自动启动,并且你可以 ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
随机推荐
- Integer和Integer常量池
Integer中有个静态内部类 IntegerCache ,里面有个cache[],也就是Integer常量池 大小为一个字节(-128-127). (jdk1.8.0_101)源码 private ...
- Linux基础提高_系统性能相关命令
w 看系统的负载信息 用于显示已经登陆系统的用户列表,并显示用户正在执行的指令 uptime [root@localhost]#uptime 17:26:07 up 9:02, 3 users, lo ...
- Redis缓存穿透、缓存雪崩、并发问题分析与解决方案
(一)缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存.我们只能 ...
- IDEA新建一个最简单的Maven的JavaWeb项目
1.项目环境 IDEA:2016.2 JDK:1.8.0_76 Maven:3.2.5 2.File-->New-->Project-->Maven 3.选择Project SDK: ...
- Mybatis源码阅读-配置文件及映射文件解析
Mybatis源码分析: 1.配置文件解析: 1.1源码阅读入口: org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(); 功能:解析全局配置文 ...
- springmvc项目中的中文乱码的解决及未生效解决
情景: springmvc项目中,在控制台输出时中文乱码,在web网页中正常. 解决方法: 在web.xml中添加如下代码: <!-- 中文乱码解决 --> <filter> ...
- apache ignite系列(六): 服务网格
简介 服务网格本质上还是远程方法调用(RPC),而在ignite中注册的服务本质体现还是以cache的形式存在,集群中的节点可以相互调用部署在其它节点上的服务,而且ignite集群会负责部署服务的 ...
- 小程序·云开发的HTTP API调用丨实战
小程序云开发之httpApi调用. 小程序云开发之httpApi调用(返回"47001处理") 技术栈 采用 nodejs + express 搭建web服务器,采用 axios ...
- Java NIO之理解I/O模型(二)
前言 上一篇文章讲解了I/O模型的一些基本概念,包括同步与异步,阻塞与非阻塞,同步IO与异步IO,阻塞IO与非阻塞IO.这次一起来了解一下现有的几种IO模型,以及高效IO的两种设计模式,也都是属于IO ...
- 5分钟了解Prometheus
Prometheus(译:普罗米修斯)用领先的开源监控解决方案为你的指标和警报提供动力(赋能). 1. 概述 1.1. Prometheus是什么? Prometheus是一个开源的系统监控和警报 ...