轻松搞定laravel的curd操作搞定简易留言版(四)
一:目的开发laravel简易留言板
二:路由操作routes.php
<?php
//GET /msg/index 展示留言列表
//GET /msg/add 展示表单
//POST /msg/add 接受 POST 数据,并入库
//GET /msg/del/{id} 删除留言
//[GET,POST] /msg/up/{id} 修改留言
Route::get('msg/index','MsgsController@index');
Route::get('msg/add','MsgsController@add');
Route::post('msg/add','MsgsController@addPost');
Route::get('msg/del/{id}','MsgsController@del')->where('id','\d+');
Route::match(['get','post'],'msg/edit/{id}','MsgsController@edit')->where('id','\d+');
三:cmd窗口命令创建用户表
php artisan make:migration create_table_msgs --create=msgs
找到生成的迁移文件并且将它改为:
<?php use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; class CreateTableMsgs extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('msgs', function (Blueprint $table) {
$table->increments('id');
$table->string('title',30);
$table->text('content');
$table->timestamps();
});
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('msgs');
}
}
cmd窗口执行命令:
php artisan migrate
这样就创建表成功了.
三:增加操作
首先建立MsgController.php控制器,用cmd窗口执行命令
php artisan make:controller MsgsController
这样控制器就自动生成了,干掉其中自动生成的方法得到如下控制器:
增加留言:
在MsgController.php中写下如下方法:
public function add(){
return view('msg.add');
}
创建文件msg,创建模板add.blade.php,特别注意,laravel 自带防站外提交 (Csrf) 的功能 ,加上特征串就可以了{!!csrf_field()!!}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>添加留言</h1>
<form action="" method="post">
{!!csrf_field()!!}
<p>
标题:<input type="text" name="title">
</p>
<p>
内容:<textarea name="content" id="" cols="30" rows="10"></textarea>
</p>
<input type="submit" value="提交">
</form>
</body>
</html>
浏览器地址栏输入如下:
ok,add的页面已经创建好了 ,那么,提交post请求后会给方法addPost处理,现在在控制器下创建addPost方法如下,当然 在此之前要创建msg的model,
同样,cmd窗口输入命令:php artisan make:model Msg
在 laravel 中约定 (非强制),表名叫xxs,复数形式.
如用户 (user) 表名叫users,邮件 (email) 表叫emails.
类和表名有关系,一般表名去掉s, 即为 Model 的类名.
所以 :
users 表的 Model 类叫class User .
emails 表的 Model 类叫class Email , 注意首字母大写 .
public function addPost(){
$msg=new Msg();
$msg->title=$_POST['title'];
$msg->content=$_POST['content'];
if($msg->save()){
return redirect('msg/index');
}else{
echo '添加失败';
exit();
}
ok,提交页面,处理成功,同样可以再多增加几条数据,回到msg/index,接下来该查询出留言内容了
四:查询出所有留言内容:
在控制器下建立index方法,代码如下:
public function index(){
$msg=Msg::get();
return view('msg.index',['msg'=>$msg]);
}
创建index.blade.php模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>laravel 留言</h1>
<table>
<tr>
<td>标题</td>
<td>内容</td>
<td>操作</td>
</tr>
@foreach($msg as $m)
<tr>
<td>{{$m->title}}</td>
<td>{{$m->content}}</td>
<td>
<a href="/msg/del/{{$m->id}}">删除</a>
<a href="/msg/edit/{{$m->id}}">编辑</a>
</td>
</tr>
@endforeach
</table>
</body>
</html>
在浏览器地址栏输入如下:
ok,就是这么简单,接下来扩展一下blade模版的知识(可以直接跳过,有需要的话就看一下):
在 blade 模板中,不是assign,而是以数组参数集中传递.
例 :
$data = [
'title'=>' 天气预报 ',
'content'=>' 今天天气真不错 ',
'score'=>mt_rand(40,90),
'users'=>['zhangsan','lisi','wangwu']
];
return view('test',$data); @if (express) # 注意 express 两边加括
@elseif (express) # 表达示中
@else
@endif
例:
{{$score}}
@if ($score >= 80)
优秀
@elseif ($score >= 60)
及格
@else
不及格
@endif @for ($i=0; $i<10; $i++)
{{$i}} <br>
@endfor @foreach ($user as $u)
{{$u}}
@endforeach @forelse ([] as $u)
{{$u}} //如果数组有数据显示数据
@empty
nobody //如果数组为空,则显示
@endforelse 用法一目了然另外还有公共模板公用,模板继承等,自行学习就ok
五:控制器下创建删除方法,代码如下 :
public function del($id){
$res=Msg::find($id)->delete();
if ($res) {
return redirect('msg/index');
}else{
echo '删除失败';
}
}
ok,删除成功
六:控制器下创建修改方法
首先必须得把之前的数据呈现到模板中,然后在修改:
方法如下:
public function edit(Request $request,$id){
if (empty($_POST)) {
$msg=Msg::find($id);
return view('msg.edit',['msg'=>$msg]);
}else{
$msg=Msg::find($id);
$msg->title=$request->title;
$msg->content=$request->content;
$res=$msg->save();
if ($res) {
return redirect('msg/index');
}else{
echo '更新失败 ';
}
}
}
如果看不懂上面的Request,请自行学习理解,或者换做下面这种方式:
public function edit($id){
if (empty($_POST)) {
$msg=Msg::find($id);
return view('msg.edit',['msg'=>$msg]);
}else{
$msg=Msg::find($id);
$msg->title=$_POST['title'];
$msg->content=$_POST['content'];
$res=$msg->save();
if ($res) {
return redirect('msg/index');
}else{
echo '更新失败 ';
}
}
}
模板edit.blade.php页面创建
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>laravel 添加留言</h1>
<form action="" method="post" enctype="multipart/form-data">
{!!csrf_field()!!}
<p>
标题:<input type="text" name="title" value="{{$msg->title}}">
</p>
<p>
内容:<textarea name="content" id="" cols="30" rows="10">{{$msg->content}}</textarea>
</p>
<input type="submit" value="提交">
</form>
</body>
</html>
ok,到此简易留言板大功告成!
轻松搞定laravel的curd操作搞定简易留言版(四)的更多相关文章
- Laravel框架数据库CURD操作、连贯操作使用方法
Laravel框架数据库CURD操作.连贯如何来操作了这个操作性是非常的方便简单了我们在这里来为各位介绍一篇相关的教程,具体的细节步骤如下文介绍. Laravel是一套简洁.优雅的PHP Web开 ...
- Laravel框架数据库CURD操作、连贯操作
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...
- Laravel框架数据库CURD操作、连贯操作总结
这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 复制代码代码如下: $use ...
- Laravel框架中的数据库CURD操作、连贯操作、链式操作的用法
Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁.富于 ...
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...
- php对xml文件进行CURD操作
XML是一种数据存储.交换.表达的标准: - 存储:优势在于半结构化,可以自定义schema,相比关系型二维表,不用遵循第一范式(可以有嵌套关系): - 交换:可以通过schema实现异构数据集成: ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- LINQ-to-SQL那点事~利用反射在LINQ-to-SQL环境中实现Ado.net的CURD操作
回到目录 对于linq to sql提供的CURD操作,给我们的感觉就是简单,容易使用,更加面向对象,不用拼SQL语句了,这些好处都表示在处理单条实体或者集合长度小的情况下,如果有一个1000条的集合 ...
- 一个简单的ORM制作(CURD操作类)
SQL执行类 CURD操作类 其他酱油类 此篇是为上篇文章填坑的,不知道上篇砸过来的砖头够不够,不够的话请大家继续砸. CURD操作类负责将用户提供的条件转换为SQL语句,并提供给IHelper执行, ...
随机推荐
- HOLOLENS 扫描特效 及得出扫描结果(SurfacePlane)
HOLOLENS 扫描特效 及得出扫描结果(SurfacePlane) 要求只扫出地板和墙, 由于地板和墙面积较大 扫描结果 HOLOTOOLKIT老版本点在参数调节PlaneFinding.Find ...
- C# 带签名dll破解
首先申明,本文只是从技术的角度来分析下怎样破解带签名的C#写的dll文件.大家如有遇到收费的软件或类库还是应该去购买正版,程序员何苦为难程序员呢. 不带签名的破解 不带签名的dll文件的破解很简单,通 ...
- 基于AngularJS的个推前端云组件探秘
基于AngularJS的个推前端云组件探秘 AngularJS是google设计和开发的一套前端开发框架,帮助开发人员简化前端开发的负担.AngularJS将帮助标准化的开发web应用结构并且提供了针 ...
- November 1st 2016 Week 45th Tuesday
Difficult circumstances serve as a textbook of life for people. 艰难坎坷是人们的生活教科书. It would be better if ...
- dubbo/dubbox 增加原生thrift及avro支持
(facebook) thrift / (hadoop) avro / (google) probuf(grpc)是近几年来比较抢眼的高效序列化/rpc框架,dubbo框架虽然有thrift的支持,但 ...
- 51Nod 1268 和为K的组合
51Nod 1268 和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...
- web前端开发中常用的尺寸和位置
我们在日常web前端开发过程中,会经常用到各种尺寸和位置.通常是js做动画的时候.轮播图,滚屏动画,粒子,碰撞检测,拖拽,滚动加载等等.这里我将常用的尺寸和位置的获取进行总结,不包括canvas,SV ...
- 被误解的MVC和被神化的MVVM(转)
转载自:http://www.infoq.com/cn/articles/rethinking-mvc-mvvm 原文作者:唐巧 被误解的 MVC MVC 的历史 MVC,全称是 Model View ...
- BZOJ 3489: A simple rmq problem
3489: A simple rmq problem Time Limit: 40 Sec Memory Limit: 600 MBSubmit: 1594 Solved: 520[Submit] ...
- Code Conventions for the Java
Oracel官方JAVA编码规范指引 http://www.oracle.com/technetwork/java/codeconvtoc-136057.html