• 1. 孤独な巡礼 - 川井憲次
  • 2. Friendships - (Original
  • 3. Kim - Taylor
  • 4. 许镜清 - 天府乐
  • 5. - Wiretree
  • 6. 宇西 - 安和桥
  • 7. 愚青 - 过境
person

创建weibo应用

composer create-project laravel/laravel weibo --prefer-dist "5.8.*"

对数据库的连接方式、数据库名、用户名密码等做相关配置:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=weibo
DB_USERNAME=homestead
DB_PASSWORD=secret

邮件相关:

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

前端mix相关 homestead环境

安装
yarn install --no-bin-links
编译
`npm run watch-poll ` 
报错 
yarn add cross-env 或者  去掉 package.json 中的四处 cross-env 或者把c ross-env 包改成5.2版本

没响应时,执行以下命令
yarn add vue-template-compiler --dev --production=false --no-bin-links

> 压缩
npm run production

>添加jQuery
yarn add jquery

前端页面css调整

resources/sass/app.scss

字体库

yarn add --dev @fortawesome/fontawesome-free

添加 resources/sass/app.scss
//font-awesome
@import "~@fortawesome/fontawesome-free/scss/fontawesome";
@import "~@fortawesome/fontawesome-free/scss/brands.scss";
@import "~@fortawesome/fontawesome-free/scss/regular.scss";
@import "~@fortawesome/fontawesome-free/scss/solid.scss";
@import "~@fortawesome/fontawesome-free/scss/v4-shims.scss";

浏览器缓存问题

.version()
线上环境中,我们一般会使用 CDN 服务器来加载静态文件,以达到优化网页加载速度的效果。

加了下划线 _,这样做是为了指定该视图文件为局部视图

切割头部和尾部子视图 @include 引入

路由

命名路由

···

<?php 

Route::get('/help','StaticPagesController@help')->name('help');
{{ route('help') }}

路由组

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
     Route::get('login','EntryController@login');
     Route::post('login','EntryController@loginFrom');
});

数据库操作

数据迁移

php artisan migrate

数据回滚

在日常开发中,我们有时候也需要通过下面的方式来回滚到最近一次执行的迁移。
php artisan migrate:rollback

模型操作

指定要操作的数据表

protected $table = 'users';

只有包含在该属性中的字段才能够被正常更新:

<?php 

   protected $fillable = [
        'name', 'email', 'password',
    ];

当我们需要对用户密码或其它敏感信息在用户实例通过数组或 JSON 显示时进行隐藏,则可使用 hidden 属性:

<?php 

   protected $hidden = [
        'password', 'remember_token',
    ];

# 由于我们刚刚创建的文章模型仅作演示用,因此我们无需对这几个文件的更改进行保存,可通过下面命令进行移除:

git add -A
git checkout -f

Tinker 环境

虽然我们现在还没有用户注册表单,但是通过 Laravel 提供的 Tinker 环境可以让我们完成对用户对象创建
<?php 

~ 添加一条用户
 App\Models\User::create(['name'=> 'Summer', 'email'=>'summer@example.com','password'=>bcrypt('password')])
 ~查看
 use App\Models\User
 User::find(1)

表单验证的语音包

composer require "overtrue/laravel-lang:~3.0"
安装成功后,在 config/app.php 文件中将以下这一行:
IlluminateTranslationTranslationServiceProvider::class,
替换为:
OvertrueLaravelLangTranslationServiceProvider::class,

邮箱

账号激活功能,只有当用户成功激活自己的账号时才能在网站上进行登录
users表新增两个字段
1.激活令牌
2.激活状态
php artisan make:migration add_activation_to_users_table --table=users
激活令牌用于验证用户身份
$table->string('activation_token')->nullable(); nullable代表允许为空
激活状态则用于判断用户是否已激活
$table->boolen('activated)->default(false);

回滚
$table->dropColum('activation_token');
$table->dropColum('activated');

Eloquent

如果我们需要在模型被创建之前进行一些设置,则可以通过监听 creating 方法来做到 , boot 方法会在用户模型类完成初始化之后进行加载,因此我们对事件的监听需要放在该方法中 , creating 用于监听模型被创建之前的事件

<?php 

   > app/Models/User.php
    public static function boot()
    {
        parent::boot();

        static::creating(function ($user) {
            $user->activation_token = Str::random(10);
        });
    }
class SimpleClass
{
    // 声明属性
    public $var = 'a default value';

    // 声明方法
    public function displayVar() {
        echo $this->var;
    }
}

Auth

表单

{{ csrf_field() }}

from 模板

  <div class="border-top border-info" style="border-width: 5px !important;"></div>
  <div class="container mt-sm-5">
      <div class="d-none d-sm-block mt-5">
      </div>
      <div class="mt-5">
          <div class="row">
              <div class="col-sm-8 m-auto col-12">
                  <div class="card shadow-lg bg-light">
                      <div class="card-header bg-info text-light">
                          <h5 class="m-0"><i class="fa fa-user"></i> 用户登录</h5>
                      </div>
                      <div class="card-body">
                          <form action="" method="post" id="loginForm">
                              {{ csrf_field() }}
                              <div class="form-group">
                                  <label>帐号</label>
                                  <input type="text" name="username" class="form-control" required
                                      placeholder="请输入用户名">
                              </div>
                              <div class="form-group">
                                  <label>密码</label>
                                  <input type="password" name="password" class="form-control" required
                                      placeholder="请输入不小于5位的登录密码">
                              </div>
                              <button class="btn btn-success btn-sm">登录帐号</button>
                          </form>
                      </div>
                      <div class="card-footer text-muted">
                          <a href="/" class="mr-2"><i class="fa fa-home"></i> 网站首页 </a>
                          <a href="" class="mr-2"><i class="fa fa-user-plus"></i>
                              注册帐号</a>
                          <a href="" class="mr-2"><i class="fa fa-archive"></i>
                              找回密码</a>
                      </div>
                  </div>
              </div>
          </div>
      </div>
  </div>

控制器

### url

 return redirect('admin/index');
 return redirect('admin/login')->with('error','用户名或者密码错误');

中间件

通过中间件来验证登陆
php artisan make:middleware AdminMiddleware

在中间件中写入检测是否登陆
if(!Auth::guard('admin')->check()){
    return redirect('/admin/login');
}

写入配置项app/Http/Kernel.php的$routeMiddleware

'admin.auth'=>AdminMiddleware::class

在Entry控制器构造方法调用中间件,除了登陆方法

public function __construct() {
    $this->middleware('admin.auth')->except(['login']);
}

新评论