好久没玩laravel了,5.6玩下(三)

好久没玩laravel了,5.6玩下(三)

好了,基础的测试通了,咱们开始增删改了

思路整理

先创建项目功能控制器

然后设置路由访问规则

然后开发项目的增删改功能

 

 

1 先创建项目的控制器

php artisan make:controller ProjectsController

生成的文件在 blog\app\Http\Controllers  这个目录下 

 

2 设置路由访问规则,找到文件  blog\app\routes\web.php 添加如下代码

Route::resource('projects', 'ProjectsController');Route::get('projects/show/{id}', 'ProjectsController@show');

意思是可以访问projects的控制器

 

3 填充 项目控制器 

blog\app\http\Controllers\ProjectsController

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;
use App\Projects;class ProjectsController extends Controller
{/***保存*/public function store(Request $request){$projects = new Projects;$projects->name = $request->input('name');$projects->author = $request->input('author');$projects->description = $request->input('description');if ($projects->save()) {return redirect('projects');} else {return back()->withInput()->withErrors('添加失败,请重试');}}//更新public function update(Request $request,$id){$projects = Projects::find($id); $projects->name = $request->input('name');$projects->author = $request->input('author');$projects->description = $request->input('description');if ($projects->save()) {return redirect('projects');} else {return back()->withInput()->withErrors('更新失败,请重试');}}//添加public function create(){return view('projects.create');}//编辑public function edit($id){$project=Projects::find($id);return view('projects.edit',compact('project'));}//删除public function destroy($id){$project = Projects::find($id);$project->delete();return redirect('projects');}//列表public function index(){$projects = Projects::all();return view('projects.index',compact('projects'));}//显示public function show($id){$project=Projects::find($id);return view('projects.show',compact('project'));}
}

 

4 设置模板页

模板页面位置在blog\resources\views 这个位置

1)在views\layouts\app.blade.php  改成如下代码

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', 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"><!-- CSRF Token --><meta name="csrf-token" content="{{ csrf_token() }}"><title>{{ config('app.name', 'Laravel') }}</title><!-- Scripts --><script src="{{ asset('js/app.js') }}" defer></script><!-- Fonts --><link rel="dns-prefetch" href="https://fonts.gstatic.com"><link href="https://fonts.googleapis.com/css?family=Raleway:300,400,600" rel="stylesheet" type="text/css"><!-- Styles --><link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body><div id="app"><nav class="navbar navbar-expand-md navbar-light navbar-laravel"><div class="container"><a class="navbar-brand" href="{{ url('/') }}">{{ config('app.name', 'Laravel') }}</a><button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><!-- Left Side Of Navbar --><ul class="navbar-nav mr-auto">                       <li><a href="/home">后台首页&nbsp;&nbsp;&nbsp;&nbsp;</a></li><li><a href="/projects">管理项目</a></li></ul><!-- Right Side Of Navbar --><ul class="navbar-nav ml-auto"><!-- Authentication Links -->@guest<li class="nav-item"><a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a></li><li class="nav-item"><a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a></li>@else<li class="nav-item dropdown"><a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>{{ Auth::user()->name }} <span class="caret"></span></a><div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdown"><a class="dropdown-item" href="{{ route('logout') }}"onclick="event.preventDefault();document.getElementById('logout-form').submit();">{{ __('Logout') }}</a><form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">@csrf</form></div></li>@endguest</ul></div></div></nav><main class="py-4">@yield('content')</main></div>
</body>
</html>

其实就是在顶部增加2个链接  一个项目管理  一个后台首页  其他都是原来的代码

 

2)

我们新建一个projects文件夹

新建4个模板文件

create.blade.php

@extends('layouts.app')@section('content')
<div class="container">  <div class="row"><div class="col-md-10 col-md-offset-1"><div class="panel panel-default"><div class="panel-heading">新增项目</div><div class="panel-body">@if (count($errors) > 0)<div class="alert alert-danger"><strong>Whoops!</strong> There were some problems with your input.<br><br><ul>@foreach ($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul></div>@endif<form action="{{ URL('projects') }}" enctype="multipart/form-data" method="POST"><input type="hidden" name="_token" value="{{ csrf_token() }}">项目标题:<input type="text" name="name" class="form-control" required="required"><br>项目作者:<input type="text" name="author" class="form-control" required="required"><br>项目内容: <textarea name="description" rows="10" class="form-control"></textarea><br><button class="btn btn-lg btn-info">新增项目</button></form></div></div></div></div>
</div>  
@endsection

 

edit.blade.php

@extends('layouts.app')@section('content')
<div class="container">  <div class="row"><div class="col-md-10 col-md-offset-1"><div class="panel panel-default"><div class="panel-heading">编辑项目</div><div class="panel-body">@if (count($errors) > 0)<div class="alert alert-danger"><strong>Whoops!</strong> There were some problems with your input.<br><br><ul>@foreach ($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul></div>@endif<form action="{{ URL('projects/'.$project->id) }}" enctype="multipart/form-data" method="POST"><input name="_method" type="hidden" value="PUT"><input type="hidden" name="_token" value="{{ csrf_token() }}">项目标题:<input type="text" name="name" class="form-control" required="required" value="{{ $project->name }}"><br>项目作者:<input type="text" name="author" class="form-control" required="required" value="{{ $project->author }}">      <br><br>项目内容:<textarea name="description" rows="10" class="form-control" required="required">{{ $project->description }}</textarea><br><button class="btn btn-lg btn-info">编辑项目</button></form></div></div></div></div>
</div>  
@endsection

 

index.blade.php

@extends('layouts.app')@section('content')
<div class="container">  <div class="row"><div class="col-md-10 col-md-offset-1"><div class="panel panel-default"><div class="panel-heading">管理项目</div><div class="panel-body"><a href="{{ URL('projects/create') }}" class="btn btn-lg btn-primary">新增</a><table class="table table-striped"><tr class="row"><th class="col-lg-2">标题</th><th class="col-lg-2">作者</th><th class="col-lg-4">查看</th><th class="col-lg-1">编辑</th><th class="col-lg-1">删除</th></tr>@foreach ($projects as $project)<tr class="row"><td class="col-lg-2">{{ $project->name }}</td><td class="col-lg-2">{{ $project->author }}</td><td class="col-lg-4"><a href="{{ URL('projects/show/'.$project->id) }}" target="_blank">{{ App\Projects::find($project->id)->name }}</a></td><td class="col-lg-1"><a href="{{ URL('projects/'.$project->id.'/edit') }}" class="btn btn-success">编辑</a></td><td class="col-lg-1"><form action="{{ URL('projects/'.$project->id) }}" method="POST" style="display: inline;"><input name="_method" type="hidden" value="DELETE"><input type="hidden" name="_token" value="{{ csrf_token() }}"><button type="submit" class="btn btn-danger">删除</button></form></td></tr>@endforeach</table></div></div></div></div>
</div>  
@endsection

 

show.blade.php

@extends('layouts.app')@section('content')
<div class="container"> <div class="row"><div class="col-md-10 col-md-offset-1"><div class="panel panel-default"><div class="panel-heading">显示项目</div><div class="panel-body">@if (count($errors) > 0)<div class="alert alert-danger"><strong>Whoops!</strong> There were some problems with your input.<br><br><ul>@foreach ($errors->all() as $error)<li>{{ $error }}</li>@endforeach</ul></div>@endif<input name="_method" type="hidden" value="PUT"><input type="hidden" name="_token" value="{{ csrf_token() }}">项目标题:{{ $project->name }}<br>项目作者:{{ $project->author }}<br>            <br><br>项目内容:{{ $project->description }}<br></div></div></div></div>
</div> 
@endsection

 

5 登录后台  操作增删改查

 

列表

 

编辑

新增

 

显示

 

大功告成,增删改查

posted on 2018-06-26 15:53 baker95935 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/baker95935/p/9229525.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485748.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode--870. 优势洗牌

给定两个大小相等的数组 A 和 B&#xff0c;A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。 返回 A 的任意排列&#xff0c;使其相对于 B 的优势最大化。 示例 1&#xff1a; 输入&#xff1a;A [2,7,11,15], B [1,10,4,11] 输出&#xff1a;[2,11,7…

OpenAI祭出120亿参数魔法模型!从文本合成图像栩栩如生,仿佛拥有人类的语言想象力...

来源&#xff1a;AI科技评论作者&#xff1a;OpenAI编译&#xff1a;贝爽、陈大鑫前几个月GPT-3刚刚问世的时候&#xff0c;能够根据一段话就写出一个小说、一段哲学语录&#xff0c;就足以令AI圈为之感到兴奋。然而2020年刚刚开始没多久&#xff0c;OpenAI又实现一重大突破&am…

java 关键字 sizeof_Java 基本数据类型 sizeof 功能

这是一个程序&#xff0c;java中没有现成的sizeof的实现&#xff0c;原因主要是java中的基本数据类型的大小都是固定的&#xff0c;所以看上去没有必要用sizeof这个关键字。实现的想法是这样的&#xff1a;java.lang.Runtime类中有一些简单的能涉及到内存管理的函数&#xff1a…

MySQL快速生成连续整数

很多时候需要用到连续的id进行数据对比&#xff0c;如判断是否连续等问题。那么&#xff0c;生成连续整数的方式有多种&#xff0c;首先容易想到的是逐步循环&#xff0c;如果想生成1kw条记录&#xff0c;则需要循环1kw次进行插入&#xff0c;那么有没有其他方式呢&#xff0c;…

MySQL小问题:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents...

这是因为时区设置不对 问题背景&#xff1a; 在运行storm项目&#xff0c;进行页面显示的时候&#xff0c;报错&#xff1a; java.sql.SQLException: The server time zone value is unrecognized or represents more than one time zone. 这是时区的问题。 我采用的第一个…

中国电子信息工程科技发展十四大趋势(2021)

来源&#xff1a;科技日报、中国电子报&#xff08;转载请注明来源&#xff09;编辑&#xff1a;蒲蒲1月5日&#xff0c;中国工程院信息与电子工程学部、中国信息与电子工程科技发展战略研究中心发布“中国电子信息工程科技发展十四大趋势&#xff08;2021&#xff09;”&#…

rosserial_java_[学习笔记]Rosserial实现Windows-ROS交互操作(1)

安装sudo apt-get install ros-indigo-rosserial-windowssudo apt-get install ros-indigo-rosserial-server编译rosrun rosserial_windows make_libraries.py my_library运行后会产生一个my_library文件夹&#xff0c;在my_library这个文件夹下会生成ros_lib文件夹Windows下创…

Chapter 4 Invitations——25

"So you are trying to irritate me to death? Since Tylers van didnt do the job?" "所以你想要把我气死&#xff1f;因为Tyler的卡车没有做到对不&#xff1f;" Anger flashed in his tawny eyes. His lips pressed into a hard line, all signs of h…

Leetcode--122. 买卖股票的最佳时机Ⅱ

给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。 注意&#xff1a;你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉…

语法树的画法(根据文法求字符串)

目录 1.语法树的画法 2.语法树的短语 3.直接短语&#xff08;直接到根部&#xff09; 4.素短语 5.句柄 6.算符优先分析句型 1.语法树的画法 文法G[E]:E->EE | E*E | (E) | i ,字符串 ii*i 推导方式有两种最左推导和最右推导&#xff08;推导的技巧就是逐步靠近字符串…

AI专家喋喋不休展开争论 为什么说预测是智能的本质

来源&#xff1a; 网易智能编译&#xff1a;网易智能 选自&#xff1a;medium参与:Rosie【网易智能讯 6月22日消息】机器学习和智能都植根于预测&#xff0c;这是巧合吗&#xff1f;当我们的技术体现了智能的本质时&#xff0c;我们正在接近一个紧要关头吗&#xff1f;或者说我…

java获取数据库连接语句_JAVA连接数据库语句

Class.forName(驱动字符串)Connection connectionDriverManager.getConnection(连接字符串)SQL 20001 通用的JDBC-ODBC桥连接驱动字符串 sun.jdbc.odbc.JdbcOdbcDriver连接字符串 JDBC:ODBC:数据源名2通过JDBC的纯连接驱动字符串 com.microsoft.jdbc.sqlserver.SQLServerDri…

认识Windows Communication Foundation

好久没有写博客&#xff0c;作为一个程序员&#xff0c;我居然习惯了不写博客。也难怪这些年来&#xff0c;一直原地踏步&#xff0c;无所长进。真是一份付出一份收获&#xff0c;种瓜得瓜&#xff0c;种豆得豆。 Windows Communication Foundation 是一种非常实用、非常强大…

Leetcode--714. 买卖股票的最佳时间含手续费

给定一个整数数组 prices&#xff0c;其中第 i 个元素代表了第 i 天的股票价格 &#xff1b;非负整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易&#xff0c;但是你每次交易都需要付手续费。如果你已经购买了一个股票&#xff0c;在卖出它之前你就不能再继续购买…

图解丨卷积神经网络数学原理解析

原标题&#xff1a;Gentle Dive into Math Behind Convolutional Neural Networks作 者&#xff1a;Piotr Skalski 编 辑 | Pita  翻 译&#xff1a;通夜&#xff08;中山大学&#xff09;、had_in&#xff08;电子科技大学&#xff09;自动驾驶、智能医疗保健和自助零售这…

java接收uniapp上传的图片_uni-app 上传图片的坑

起先&#xff0c;在uni-app插件市场下载了上传图片的插件由于uni-app的API uni.unloadFile()其中content-type 为 multipart/form-data导致在于后端对接口时出现跨域最后解决方法:自己重新用axios封装了一个请求方式npm install axiosutil / axios-request.jsimport axios from…

Leetcode--123. 买卖股票的最佳时间Ⅲ

给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: [3,3,5,0,…

[2018湖南省队集训] 6.28 T3 simulate

这道模拟题出的我毫无脾气2333 最重要的是先要发现操作顺序不影响最后的答案&#xff0c;也就是每次随便挑一个>2的数进行操作最后总是可以得到同样的数列。 (这个还不太难想qwq) 但是最骚的是接下来的模拟。。。。 我们考虑从左到右消&#xff0c;假设目前在i&#xff0c;1…

“AI工厂”本质:AI基础设施及怎样将AI转化为运营动力

来源&#xff1a;TechTalks作者&#xff1a;Ben Dickson编译&#xff1a;科技行者持续关注人工智能新闻的朋友肯定已经发现&#xff0c;AI这个字眼已经被异化成了两个截然不同的定义。媒体和影视作品喜欢把AI描述成已然具备人类般的能力、会导致大量失业甚至会出动机械部队进行…

Leetcode--188. 买卖股票的最佳时机Ⅳ

给定一个数组&#xff0c;它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意: 你不能同时参与多笔交易&#xff08;你必须在再次购买前出售掉之前的股票&#xff09;。 示例 1: 输入: [2,4,1], k…