Laravel框架开发实践心得体会

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Category;
use Illuminate\Validation\Rule;

class CategoryController extends Controller
{
    public function add(){
        $category = Category::where('pid', 0)->get();
        return view('admin.category.add', ['category' => $category] );
    }

    public function save(Request $request){
        $data = $request->all();
        $rule = isset($data['id']) ? ',name,'.$data['id'] : '';
        $this->validate($request,[
            'name'=>'required|unique:category'.$rule,
        ],[
            'name.required'=>'栏目名称不能为空',
            'name.unique'=>'栏目名称不能重复'
        ]);
        if(isset($data['id'])){
            $id = $data['id'];
            unset($data['id']);
            unset($data['_token']);
            $res = Category::where('id',$id)->update($data);
            $type = $res ? "message" : "tip";
            $message = $res ? "修改成功" : "修改失败";
            return redirect('category')->with($type, $message);
        }
        $re = Category::create($data);
        if($re){
            return redirect('category')->with('message','添加成功');
        }else{
            return redirect('category/add')->with('tip','添加失败');
        }
    }

    public function index(){
        $data = Category::orderBy('sort', 'asc')->get()->toArray();
        $category = $this->getTreeListCheckLeaf($data);
        return view('admin.category.index', ['category' => $category]);
    }

    public function getTreeListCheckLeaf($data, $name = 'isLeaf')
    {
        $data = $this->treeList($data);
        foreach ($data as $k => $v) {
            foreach ($data as $vv) {
                $data[$k][$name] = true;
                if ($v['id'] === $vv['pid']) {
                    $data[$k][$name] = false;
                    break;
                }
            }
        }
        return $data;
    }

    public function treeList($data, $pid = 0, $level = 0, &$tree = [])
    {
        foreach ($data as $v) {
            if ($v['pid'] == $pid) {
                $v['level'] = $level;
                $tree[] = $v;
                $this->treeList($data, $v['id'], $level + 1, $tree);
            }
        }
        return $tree;
    }

    public function sort(Request $request){
        $sort = $request->input('sort');
        foreach ($sort as $k => $v) {
            Category::where('id', (int)$k)->update(['sort' => (int)$v]);
        }
        return redirect('category')->with('message','改变排序成功');
    }

    public function edit($id){
        $data = [];
        if ($id) {
            if (!$data = Category::find($id)) {
                return back()->with('tip', '记录不存在。');
            }
        }
        $category = Category::where('pid', 0)->get();
        return view('admin.category.edit', ['id'=>$id, 'data'=>$data, 'category' => $category]);
    }

    public function delete($id){
        if (!$category = Category::find($id)) {
            return response()->json(['code' => 0, 'msg' => '删除失败,记录不存在。' ]);
        }
        $category->delete();
        return response()->json(['code' => 1, 'msg' => '删除成功' ]);
    }

}


<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Category;
use App\Content;

class ContentController extends Controller
{
    public function add()
    {
        $data = Category::orderBy('sort', 'asc')->get()->toArray();
        $cate = new CategoryController();
        $category = $cate->getTreeListCheckLeaf($data);
        return view('admin.content.add', ['category' => $category]);
    }

    public function save(Request $request)
    {
        $data = $request->all();
        $this->validate($request,[
            'cid'=>'required',
            'title'=>'required'
        ],[
            'cid.require'=>'分类不能为空',
            'title.require'=>'标题不能为空'
        ]);
        if(isset($data['id'])){
            $id = $data['id'];
            unset($data['id']);
            unset($data['_token']);
            $res = Content::where('id',$id)->update($data);
            $type = $res ? "message" : "tip";
            $message = $res ? "修改成功" : "修改失败";
            return redirect('content')->with($type, $message);
        }

        $re = Content::create($data);
        if($re){
            return redirect('content')->with('message','添加成功');
        }else{
            return redirect('content/add')->with('tip','添加失败');
        }
    }

    public function upload(Request $request)
    {
        if ($request->hasFile('image')) {
            $image = $request->file('image');
            if ($image->isValid()) {
                $name = md5(microtime(true)) . '.' . $image->extension();
                $image->move('static/upload', $name);
                $path = '/static/upload/' . $name;
                $returndata  = array(
                    'filename' => $name,
                    'path' => $path
                );
                $result = [
                    'code' => 1,
                    'msg'  => '上传成功',
                    'time' => time(),
                    'data' => $returndata,
                ];
                return response()->json($result);
            }
            return $image->getErrorMessage();
        }
        return '文件上传失败';
    }

    public function index($id = 0)
    {
        $data = Category::orderBy('sort', 'asc')->get()->toArray();
        $cate = new CategoryController();
        $category = $cate->getTreeListCheckLeaf($data);
        $content = Content::get();
        if ($id) {
            $content = Content::where('cid', $id)->get();
        }
        return view('admin.content.index', ['category' => $category, 'content' => $content, 'cid' => $id]);
    }

    public function edit(Request $request)
    {
        $id = $request->id;
        $data = Category::orderBy('sort', 'asc')->get()->toArray();
        $cate = new CategoryController();
        $category = $cate->getTreeListCheckLeaf($data);
        $content = Content::find($id);
        return view('admin.content.edit', ['category' => $category, 'content' => $content]);
    }

    public function delete($id)
    {
        if (!$content = Content::find($id)) {
            return response()->json(['code' => 0, 'msg' => '删除失败,记录不存在。' ]);
        }
        $content->delete();
        return response()->json(['code' => 1, 'msg' => '删除成功' ]);
    }
}

 Laravel框架开发实践的心得
Laravel框架给我留下了深刻的印象,其优雅的语法和丰富的功能使得开发变得更加高效和愉快。在实际工作中,我通过以下几点来提升Laravel框架开发的效率和质量:

良好的文档和社区支持:Laravel拥有详细且易于理解的官方文档,同时也有庞大而活跃的社区支持。在遇到问题时,我能够迅速地查阅文档或向社区寻求帮助,节省了大量的解决问题时间。

遵循最佳实践:我始终坚持使用Laravel框架推荐的最佳实践,如MVC模式、依赖注入等。这样不仅有助于代码结构清晰、易于维护,也使得团队协作更加高效。

使用Composer管理依赖:Composer是PHP的依赖管理工具,我在项目中广泛使用Composer来管理第三方依赖包,确保项目的稳定性和安全性。

优化性能:在开发过程中,我会对代码进行性能优化,尽量减少数据库查询次数、缓存数据等方法来提高系统性能,从而改善用户体验。

研究人员们在游戏主机领域进行了多方面的工作。他们致力于开发更高性能、更节能和更可靠的游戏主机硬件,包括处理器架构、图形处理单元(GPU)、内存和存储技术,并关注游戏主机的物理设计、散热和噪音控制等方面。
另外,研究者还专注于游戏主机软件开发,努力开发游戏引擎、图形渲染技术、物理模拟等工具和框架,以提高游戏开发的效率和质量。一些研究者也在探索游戏主机上的虚拟现实(VR)和增强现实(AR)技术。
随着在线游戏的兴起,游戏主机的网络性能变得越来越重要。因此,研究者们努力改进游戏主机的网络连接稳定性、延迟和带宽,包括网络协议优化、数据压缩和流媒体技术等方面的研究。
另外,研究者们也关注游戏主机用户体验和交互设计,通过实验和用户调研,探索如何设计更直观、易用和有趣的游戏主机界面,以及改善多人游戏体验和社交功能。最后,研究人员们致力于提高游戏主机的安全性和防护机制,包括身份验证、加密算法、漏洞挖掘和反作弊技术等方面的研究,以保护游戏主机上存储的个人信息和支付信息。

安全性考虑:在开发过程中,我会重视数据验证、防止SQL注入、XSS攻击等安全问题,以确保系统的安全性和稳定性。

日志和错误处理:我在项目中加入了日志记录功能,及时记录系统运行情况,方便后期排查问题。同时,我也会合理处理异常,提高系统的可靠性。

自动化测试:我会编写单元测试、功能测试等各种测试用例,以确保代码质量和系统稳定性,同时减少潜在的bug出现。

项目复盘
在每个项目结束之后,我都会进行项目复盘,总结工作中的得失和经验教训。通过项目复盘,我发现了一些可以改进的地方:

沟通与协作:在团队协作中,及时有效的沟通和协作是非常重要的。在过去的项目中,我意识到在沟通和协作方面还有提升的空间,因此我开始主动与团队成员沟通,分享想法,并学习倾听他人的意见。

时间管理:在项目开发过程中,我注意到有时候会因为没有合理安排时间而导致工作效率降低。因此,我开始尝试使用时间管理工具来规划和分配工作时间,提高工作效率。

持续学习:技术更新换代非常快,作为一名软件开发工程师,持续学习是必不可少的。我开始着手学习一些新的技术,以便在未来的项目中能够更好地应用这些新知识。

技术笔记
为了巩固所学知识,我经常会编写技术笔记,将学到的知识整理成文字或者图表,以便之后复习和巩固。这种方式帮助我更好地理解和掌握所学的知识点,同时也提高了我的工作效率。

职场感悟心得
作为一名职场新人,我认识到在工作中除了技术能力之外,沟通能力、团队协作能力等软实力同样重要。我逐渐明白了团队合作的重要性,学会了与同事们更好地相处和合作。此外,我也意识到在职场中需要不断学习和提升自己,以应对日益复杂和多变的工作环境。

总的来说,Laravel框架的开发实践让我受益匪浅,项目复盘也让我有机会总结经验、找到改进的空间。而技术笔记和职场感悟心得则成为了我前行路上的宝贵财富。我相信,在未来的工作中,我会继续努力学习,不断提升自己,成为一名更优秀的软件开发工程师。

部分路由:

<?php

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

Route::get('/', function () {

    return view('welcome');

});

//后台

Route::get('/admin/login','Admin\UserController@login');

Route::post('/admin/check','Admin\UserController@check');

Route::get('/admin/logout', 'Admin\UserController@logout');

Route::get('/admin/index', 'Admin\IndexController@index')->middleware(['Admin']);

//栏目

Route::prefix('category')->namespace('Admin')->middleware(['Admin'])->group(function () {

    Route::get('', 'CategoryController@index');

    Route::get('add', 'CategoryController@add');

    Route::post('save', 'CategoryController@save');

    Route::get('edit/{id}', 'CategoryController@edit');

    Route::post('delete/{id}', 'CategoryController@delete');

    Route::post('sort', 'CategoryController@sort');

});

// 内容

Route::prefix('content')->namespace('Admin')->middleware(['Admin'])->group(function () {

    Route::get('add', 'ContentController@add');

    Route::post('upload', 'ContentController@upload');

    Route::post('save', 'ContentController@save');

    Route::get('edit/{id}', 'ContentController@edit');

    Route::post('delete/{id}', 'ContentController@delete');

    Route::get('{id?}', 'ContentController@index');

});

// 广告位

Route::prefix('adv')->namespace('Admin')->middleware(['Admin'])->group(function () {

    Route::get('add/{id?}', 'AdvController@add');

    Route::post('save', 'AdvController@save');

    Route::post('delete/{id}', 'AdvController@delete');

    Route::get('', 'AdvController@index');

});

// 广告内容

Route::prefix('advcontent')->namespace('Admin')->middleware(['Admin'])->group(function () {

    Route::get('add/{id?}', 'AdvcontentController@add');

    Route::post('upload', 'AdvcontentController@upload');

    Route::post('save', 'AdvcontentController@save');

    Route::post('delete/{id}', 'AdvcontentController@delete');

    Route::get('', 'AdvcontentController@index');

});

// 首页

Route::get('/', 'IndexController@index');

Route::get('/lists/{id}', 'IndexController@lists');

Route::get('/detail/{id}', 'IndexController@detail');

Route::get('/like/{id}', 'IndexController@like');

Route::get('/comment', 'IndexController@comment');

Route::post('/register', 'UserController@register');

Route::post('/login', 'UserController@login');

Route::get('/logout', 'UserController@logout');


 

// 设置面包屑导航

Route::name('home')->get('/', 'IndexController@index');

Route::name('category')->get('/lists/{id}', 'IndexController@lists');

Route::name('detail')->get('/detail/{id}', 'IndexController@detail');

部分原代码:

<!DOCTYPE html>

<html>

<head>

  @include('public/static')

  <title>详细页</title>

</head>

<body>

@include('public/header')

<div class="main">

  <div class="main-crumb">

    <div class="container">

      <!-- 面包屑导航 -->

      <nav aria-label="breadcrumb">

        {!! Breadcrumbs::render('detail', ['id'=>$id,'cid'=>$cid]); !!}

      </nav>

    </div>

  </div>

  <div class="container">

    <div class="row">

      <div class="col-md-9">

        <!-- 内容区域 -->

        <article class="main-article">

          <header>

            <h1>{{$content->title}}</h1>

            <div>发表于{{ date('Y-m-d', strtotime($content->create_time)) }}</div>

          </header>

          <div class="main-article-content">

            <p><img class="img-fluid" src="/static/upload/{{$content->image}}"></p>

            <p>{!! $content->content !!}</p>

          </div>

          <!-- 点赞模块 -->

          @if(session()->has('users'))

            <div class="main-article-like">

              <span>

              <i class="fa fa-thumbs-up" aria-hidden="true">{{$count}}</i>

              </span>

            </div>

          @endif

        </article>

        <div class="main-comment">

          <!-- 评论列表 -->

          @if(!$comments->isEmpty())

            <div class="main-comment-header">

              <span id="count">{{$comments->count()}}</span> 条评论

            </div>

            @foreach($comments as $val)

              <div class="main-comment-item">

                <div class="main-comment-name">{{$val->user->name}}</div>

                <div class="main-comment-date">

                  {{ date('Y-m-d', strtotime($val->created_at)) }}</div>

                <div class="main-comment-content">{{$val->content}}</div>

              </div>

            @endforeach

          @endif

        </div>

        <!-- 发表评论模块 -->

        <div class="main-reply">

          @if(session()->has('users'))

            <div class="main-reply-header">发表评论</div>

            <div class="main-reply-title">评论内容</div>

            <div><textarea name="content" rows="8" id="content"></textarea></div>

            <div>

              <input type="hidden" id='c_id' value="{{$id}}">

              <input type="button" value="提交评论" id="publish">

            </div>

          @endif

        </div>

      </div>

      <div class="col-md-3">

        <!-- 侧边栏 -->

        @include('public/sidebar')

      </div>

    </div>

  </div>

</div>

@include('public/footer')

</body>

<script>

  $(document).ready(function() {

    $(".fa-thumbs-up").bind("click", function () {

      $.get("{{ url('like', $id) }}", {}, function (result) {

        var count = result.count;

        $(".fa-thumbs-up").html();

        $(".fa-thumbs-up").html(count);

      });

    });

    $('#publish').bind("click",function(){

      var data = {

        'cid' : $("#c_id").val(),

        'content' : $("#content").val()

      };

      $.get("{{ url('comment') }}",data, function(result){

        var data = result.data;

        var user = data.user;

        var html = '<div class="main-comment-item">';

        html += '<div class="main-comment-name">' + user['name'] + '</div>';

        html += '<div class="main-comment-date">';

        html += data['created_time'];

        html += '</div>';

        html += '<div class="main-comment-content">';

        html += data['content'] + '</div>';

        html += '</div>';

        $(".main-comment").append(html);

        $("#count").html();

        $("#count").html(data['count']);

      });

    });

  });

</script>

</html>

<!DOCTYPE html>

<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

  <head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Laravel</title>

    <!-- Fonts -->

    <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">

    <!-- Styles -->

    <style>

      html, body {

        background-color: #fff;

        color: #636b6f;

        font-family: 'Nunito', sans-serif;

        font-weight: 200;

        height: 100vh;

        margin: 0;

      }

      .full-height {

        height: 100vh;

      }

      .flex-center {

        align-items: center;

        display: flex;

        justify-content: center;

      }

      .position-ref {

        position: relative;

      }

      .top-right {

        position: absolute;

        right: 10px;

        top: 18px;

      }

      .content {

        text-align: center;

      }

      .title {

        font-size: 84px;

      }

      .links > a {

        color: #636b6f;

        padding: 0 25px;

        font-size: 13px;

        font-weight: 600;

        letter-spacing: .1rem;

        text-decoration: none;

        text-transform: uppercase;

      }

      .m-b-md {

        margin-bottom: 30px;

      }

    </style>

  </head>

  <body>

    <div class="flex-center position-ref full-height">

      @if (Route::has('login'))

        <div class="top-right links">

          @auth

            <a href="{{ url('/home') }}">Home</a>

          @else

            <a href="{{ route('login') }}">Login</a>

            @if (Route::has('register'))

              <a href="{{ route('register') }}">Register</a>

            @endif

          @endauth

        </div>

      @endif

      <div class="content">

        <div class="title m-b-md">

          Laravel

        </div>

        <div class="links">

          <a href="https://laravel.com/docs">Docs</a>

          <a href="https://laracasts.com">Laracasts</a>

          <a href="https://laravel-news.com">News</a>

          <a href="https://blog.laravel.com">Blog</a>

          <a href="https://nova.laravel.com">Nova</a>

          <a href="https://forge.laravel.com">Forge</a>

          <a href="https://github.com/laravel/laravel">GitHub</a>

        </div>

      </div>

    </div>

  </body>

</html>

成果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_74730196

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值