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

思路整理

先创建项目功能控制器

然后设置路由访问规则

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

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

<?php

namespace 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) > )
<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="" 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) > )
<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="" 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) > )
<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 登录后台  操作增删改查

列表

编辑

新增

显示

大功告成,增删改查

好久没玩laravel了,5.6玩下(三)的更多相关文章

  1. 好久没玩laravel了,今天玩下Laravel项目迁移步骤

    .在新的目录中克隆git远程版本库 .执行composer install安装依赖 .执行php artisan key:generate生成key 好久没玩laravel了,今天玩下Laravel项 ...

  2. 好久没玩docker了,温下手

    好久没玩docker了,温下手 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum 命令: yum i ...

  3. 好久没来了,重出江湖,共享个python34+pyqt+pyserial串口工具源码

    真的是好久没来了,写博客对我来说还真是难坚持下来,热度一过就忘了,就算什么时候想起来也懒得去敲一个字,这次真不知道能坚持多久,随心吧,想写写,不想写也不勉强自己. 最近由于工作调试需要自己写了一个带图 ...

  4. 通通玩blend美工(6)下——仿iPhone滚动选择器的ListBox(交互逻辑)

    原文:通通玩blend美工(6)下--仿iPhone滚动选择器的ListBox(交互逻辑) 上一篇我们已经把界面画出来了,这篇我们就来制作交互的逻辑吧.上一篇的电梯: http://www.cnblo ...

  5. kotlin电商学习记录,好久没来逛逛了

    好久没来,一直做毕业设计,用kotlin写一个基于以图搜图的购物app,现在又赶上实习,内容多,时间少,不过前途光明并由贵人指点.加油 kotlin电商学习记录 技术选型 视图层 kotlin-and ...

  6. 好久没写原生的PHP调用数据库代码了分享个

    好久没写原生的PHP代码调用数据库了 eader("Content-type: text/html; charset=utf-8"); $time=$symptoms=$attr= ...

  7. Laravel大型项目系列教程(三)之发表文章

    Laravel大型项目系列教程(三)之发表文章 一.前言 上一节教程中完成了用户管理,这节教程将大概完成发表Markdown格式文章并展示的功能. 二.Let's go 1.数据库迁移 文章模块中我们 ...

  8. Laravel 解决在ajax 请求下不能保存session的问题

    Laravel 解决在ajax 请求下不能保存session的问题 \Session::put('isLogin',true); // 你要保存的session key \Session::put(' ...

  9. 好久没玩laravel了,5.6玩下(二)

    做个项目的增删改查 第一步  把数据库的表结构建好,生成迁移 1 怎么建,当然是用php artisan命令了 使用 Artisan 命令 make:migration 来创建一个新的迁移: php ...

随机推荐

  1. HDU 4548:美素数

    Problem Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识. 问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素 ...

  2. java反射机制的作用与优点

    java的反射机制就是增加程序的灵活性,避免将程序写死到代码里,例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码, ...

  3. 0-1背包 codeforces 55 D

    题目链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=29608#problem/D 我把它化成了0-1背包,应该可以直接用多重背包做 ...

  4. Transformer-view java实体 转换视图 Lists.transform

    自: https://blog.csdn.net/mnmlist/article/details/53870520 meta_ws 连接: https://github.com/kse-music/d ...

  5. 【BZOJ1703】【usaco2007margold】ranking the cows 奶牛的魅力排名

    想的时间比较长所以看题解了= = 原题: Fj有N(N<=1000)头牛,每头牛都有独一无二的正整数 魅力值,Fj想让他们按 魅力值排序. Fj已经知道M(1<=M<=10000)对 ...

  6. Hadoop操作前准备工作

    摘要:本文介绍Hadoop操作前的准备工作. 关键词:Hadoop  Linux   JDK  WinSCP 俗语说,“磨刀不误砍柴工”.Hadoop操作前的准备工作可以加快Hadoop的操作与应用. ...

  7. apache flink kubernetes 运行试用

    类似docker-compose 运行模式,使用的是deploy 的模式 deploy yaml 文件 deploy-k8s-yaml apiVersion: extensions/v1beta1 k ...

  8. 使用cglib动态创建javabean

    动态创建javabean对于我们进行开发,会有一定的帮助,一下是使用cglib动态创建javabean的一个例子: 先贴上code: package com.dalong.CreateCode; im ...

  9. javabean(实体类)转Map类型

    javabean(实体类)转Map类型 从网上"風亦飞"的导出EXCEL的源代码提取出来的.认为非常好用.分享一下给大家,主要看beanToMap方法就OK了 /*以下是从poi导 ...

  10. jsp渲染

    SP与Servlet什么关系?JSP和ASP什么关系?下面我们一一来探讨. 第一个.jsp文件:<html>    <head>           <title> ...