laravel心得体验

Laravel是一款流行的PHP开发框架,它简化了Web应用程序的开发过程,并提供了许多强大的功能和工具。作为一个开发者,我使用Laravel已经有一段时间了,下面是我对这个框架的一些心得体会。

1. 简单易用:Laravel的设计思想是让开发过程变得简单而愉快。它提供了直观且具有表达力的语法,使得编写代码更加轻松。同时,Laravel还提供了丰富的文档和教程,帮助开发者快速上手并解决问题。

2. MVC架构:Laravel采用了MVC(模型-视图-控制器)的架构模式,使代码的组织更加清晰有序。通过将业务逻辑、数据和视图分离,开发者可以更好地管理和维护代码。这种架构模式也有助于团队合作和项目的可扩展性。

3. 强大的数据库支持:Laravel提供了强大而灵活的数据库支持,可以使用原生SQL查询,也可以使用查询构造器和ORM(对象关系映射)进行数据库操作。这使得开发者可以更轻松地与各种数据库进行交互,而无需深入了解底层细节。

4. 路由和中间件:Laravel的路由系统非常强大,可以将URL与相应的控制器方法进行绑定。通过定义路由和中间件,可以轻松实现身份验证、访问控制和请求过滤等功能。这使得开发者可以更好地管理和保护应用程序的路由和终端点。

5. Blade模板引擎:Laravel的Blade模板引擎提供了一种简洁而强大的方式来构建视图。它支持条件语句、循环和局部视图等功能,使开发者可以更好地组织和重用视图代码。同时,Blade还支持模板继承和布局,使得视图的编写更加灵活和高效。

6. 高度可测试性:Laravel鼓励开发者编写可测试的代码,并提供了一系列工具和方法来简化测试过程。开发者可以使用PHPUnit等测试框架进行单元测试和集成测试,确保代码的质量和稳定性。这也有助于快速发现和修复潜在的问题。

7. 社区丰富活跃:Laravel拥有一个庞大而活跃的社区,许多优秀的扩展包和库都是由社区贡献的。这些扩展包可以帮助开发者快速实现各种功能,进一步提高开发效率。此外,有很多Laravel相关的博客、论坛和教程可供学习和交流。

总的来说,Laravel是一个强大而易用的PHP开发框架,它提供了丰富的功能和工具,使得开发Web应用程序变得更加简单和高效。通过采用MVC架构、强大的数据库支持、灵活的路由和中间件、高度可测试性以及活跃的社区等特性,Laravel成为了许多开发者的首选框架。我相信随着时间的推移,Laravel框架会继续发展壮大,为PHP开发者带来更多的便利和创造力。

laravel框架的目录结构

下面是定义路由文件代码、部分public文件下的代码和运行页面效果图

<?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="container">
    <div class="row mt-4">
      <!-- 轮播图 -->
      <div class="col-md-6 main-carousel">
        <div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
          <div class="carousel-inner">
            @foreach($recommend as $k=>$con)
              <div class="carousel-item @if($k==0) active @endif">
                <img src="/static/upload/{{$con->image}}" class="d-block w-100">
                <a href="{{url('detail', ['id'=> $con->id])}}">
                  <div class="carousel-caption d-none d-md-block">
                    <h5>{{$con->title}}</h5>
                    <p></p>
                  </div>
                </a>
              </div>
            @endforeach
          </div>
          <a class="carousel-control-prev" href="#carouselExampleCaptions" role="button" data-slide="prev">
            <span class="carousel-control-prev-icon" aria-hidden="true"></span>
            <span class="sr-only">Previous</span>
          </a>
          <a class="carousel-control-next" href="#carouselExampleCaptions" role="button" data-slide="next">
            <span class="carousel-control-next-icon" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
          </a>
        </div>
      </div>
      <!-- 广告位 -->
      <div class="col-md-6">
        <div class="row main-imgbox">
          @foreach($adv as $adval)
            <div class="col-md-6">
              <a href="#"><img class="img-fluid" src="/static/upload/{{$adval}}"></a>
            </div>
          @endforeach
        </div>
      </div>
    </div>
    <div class="row">
      <div class="col-md-9">
        <div class="row">
          <!-- 栏目内容 -->
          @foreach($list as $value)
          <div class="col-md-6 mb-4">
            <div class="card main-card">
              <div class="card-header">
                <h2>{{$value->name}}</h2>
                <span class="float-right">
                  <a href="{{ url('lists', ['id' => $value->id ])}}">[ 查看更多 ]</a>
                </span>
              </div>
              @foreach($value->content as $val)
              <div class="card-body">
                <div class="main-card-pic">
                  <a href="{{url('detail', ['id'=> $val->id])}}">
                    <img class="img-fluid" src="/static/upload/{{$val->image}}">
                    <span><i class="fa fa-search"></i></span>
                  </a>
                </div>
                <div class="main-card-info">
                  <span><i class="fa fa-calendar"></i>
                  {{ date('Y-m-d', strtotime($val->created_at)) }}</span>
                </div>
                <h3><a href="{{url('detail', ['id'=> $val->id])}}">{{$val->title}}</a></h3>
                <div class="main-card-desc">{!!str_limit($val->content , 100)!!}</div>
              </div>
              @endforeach
            </div>
          </div>
          @endforeach
        </div>
      </div>
      <div class="col-md-3">
        <!-- 侧边栏 -->
        @include('public/sidebar')
      </div>
    </div>
  </div>
</div>
@include('public/footer')
</body>
</html>
<!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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值