我的博客-项目准备

上一篇 一个项目的初始及开发流程

项目内容

一、业务原型图及设计

简单直接,我们直接仿一个网站(简化版),点击查看, 这是一个很好的学习网站,学习到了很多基础知识~,顺便帮他推广一下~。

1.结构分析

网站主要有3个模块视频、问答、文章(路径、订阅、签到我们后续再说)。
当然还有2个主要的模块,个人中心和评论。

  • 视频模块:一个二维的概念我们可以理解为“专题-->视频”即一个专题对应多个视频。
  • 问答:可以提问及回答。
  • 文章:可以发布文章。
  • 评论:可以对以上三个模块进行评论。
  • 个人中心:可以发布视频、提问及文章等。

2.页面分析:

  • 共享页面:header头、footer尾;
  • 主页面:头图、专题展示,下级页面如下
    • 所有视频页;
    • 视频详情页;
  • 问答:问答列表,下级页面如下:
    • 问答详情;
  • 文章:文章列表,下级页面如下:
    • 文章详情;

      3.场景分析

      结合实际应用,我们将视频模块与文章模块进行合并(视频模块后期再说吧)。
      专题对应多个文章。
      所以本次我们主要实现的模块可以暂定为:文章、问答、评论、个人中心。

二、框架选择

当然是laravel5.3的标配啊。
开发环境:php5.6.4,mysql5.7。
win10项目目录下运行
php artisan serve --host=0.0.0.0 --port=80
开始项目的(访问http://localhost即可,别忘了配置数据库)

三、数据库设计

1.模型关系图如下:

2.需要用到的第三方扩展(个人脚手架的开始)

脚手架(以下项目是我现在做项目的一个原型基础,现在教大家搭建一下)

1.汉化(Laravel-lang
composer require caouecs/laravel-lang:~3.0
复制vendor/caouecs/laravel-lang/src/zh-CN到resources/lang/下
修改config/app.php'locale' => 'zh-CN'
2.Repository 模式(参考)
composer require "bosnadev/repositories: 0.*"
教程见参考
3.七牛云集成
安装依赖包
composer require qiniu/php-sdk
配置文件filesystems.php
disks中添加如下内容

'qiniu' => [
   'driver'  => 'qiniu',
        'domains' => [
            'default'   => env('QINIU_DEFAULT'), //你的七牛域名
            'https'     => env('QINIU_HTTPS'),         //你的HTTPS域名
            'custom'    => env('QINIU_HTTP'),                //你的自定义域名
        ],
        'access_key'=> env('QINIU_ACCESS_KEY'),  //AccessKey
        'secret_key'=> env('QINIU_SECRET_KEY'),  //SecretKey
        'bucket'    => env('QINIU_BUCKET'),  //Bucket名字
        'notify_url'=> env('QINIU_NOTIFY_URL'),  //持久化处理回调地址
    ],

然后配置你的参数到.env文件

在app文件夹下新建helpers.php

/**
 * 生成文件路径(返回图片路径)
 * @param $file
 * @param $exts
 * @return bool|string
 */
if(!function_exists('makePath')) {
    function makePath($file, $exts = ['jpg', 'png', 'jpeg', 'gif']) {
        $ext = strtolower($file->guessExtension());
        if( in_array($ext, $exts) ){
            $filename = md5(microtime()) . '.' . $ext ;
            $storagePath = 'uploads/files/'. date('Ymd');
            if (env('FILE_DISK') == 'local'){
                $destinationPath = public_path($storagePath);
                $file->move($destinationPath ,$filename);
                return '/'.$storagePath .'/' .$filename;
            }else {
                $path = $file->path();
                return upload_qiniu($storagePath.'/'.$filename, $path);
            }
        }
        return false;
    }
}

/**
 * 上传文件到七牛云(返回图片路径)
 * @param $filename
 * @param $filepath
 * @return bool|string
 */
if(!function_exists('upload_qiniu')) {
    function upload_qiniu($filename, $filepath) {
        $upManager = new Qiniu\Storage\UploadManager();
        $auth = new  Qiniu\Auth(config('filesystems.disks.qiniu.access_key'), config('filesystems.disks.qiniu.secret_key'));
        $token = $auth->uploadToken(config('filesystems.disks.qiniu.bucket'));
        list($ret, $err) = $upManager->putFile($token, $filename, $filepath);
        if ($err !== null) {
            return false;
        } else {
            return 'http://'.config('filesystems.disks.qiniu.domains.custom').'/'.$filename;
        }
    }
}
  1. 消息提示(参考
    安装
    composer require laracasts/flash

配置

'providers' => [
    Laracasts\Flash\FlashServiceProvider::class,
];

详细配置参考
composer require laracasts/flash

  1. SendCloud邮件发送服务(参考
    安装
    composer require naux/sendcloud
    配置
    修改 config/app.php,添加服务提供者
    'providers' => [
    // 添加这行
    Naux\Mail\SendCloudServiceProvider::class,
    ];

    .env 中配置你的密钥, 并修改邮件驱动为 sendcloud

    MAIL_DRIVER=sendcloud
    SEND_CLOUD_USER=   # 创建的 api_user
    SEND_CLOUD_KEY=    # 分配的 api_key

上面这些基本上就够我们用的了~,后续再根据实际需求添加

今天先到这吧。如果大家有更好的方式或扩展包希望留言让我少走一些弯路~,多谢大家关照~(下方可以加我微信。打赏也可以哈~哈哈哈)

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 5年前 自动加精
franktrue
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9

赞!我也经常去laravist看jellyBool的视频,讲得都很棒!

6年前 评论
Destiny

阔以阔以。

6年前 评论
Artisan

请问文章中数据库的那张图是用什么画的?

6年前 评论

求个前台模板:smile:

6年前 评论
franktrue

@Artisan Chrome的插件Gliffy Diagrams

6年前 评论
franktrue

@生活无限好 自己做东西的话bootstrap就挺好的啊,后台静态模板我一般用AdminLTE

6年前 评论
Artisan

@fnf1993 试用了一下,很棒的工具。希望能多分享些好用的工具 ?

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!