• Laravel 进阶笔记


    所谓进阶, 刚摸了一个礼拜, 总体感觉容易上手, 很多已经实现的模块功能, 比如"记住我", "比如激活邮件", "比如用户认证"等等, 这些东西, thinkphp都没有(或者我无知, 有但是我不知道), 现在有一些问题:

    1. 不重复造轮子当然好, 但是如果想在轮子上镶点儿钻, 是不是就麻烦了?

    2. 增删改查, 以及join类的查询应该怎么做, 还不是太清楚, 或者, 我压根看不到sql语句, 并不知道ORM跟sql语句之前的直接联系, 感觉学到的东西很模糊, 难以记忆, 估计要看大量Laravel的文档才行.

    接下来一周是进阶课程.

    进阶课程是有关一个简单的BBS

    首先产品定义, 需要开发的项目有三种元素:

    1. 角色: 即admin, 管理员, 游客, 注册用户, 4个角色role, admin即系统的root用户, 对管理员有管理权.

    2. 信息:

    用户: 模型名称叫User, UGC产品, 内容都是User产生

    话题: 模型名Topic, 即帖子, 帖子由用户产生

    分类: 模型名称Category, 即我们常说的版块, 板块由管理员产生

    回复: Reply, 也又用户自己产生, 其实这个Reply是不是也是话题的一种, 即每个话题增加一个属性, 即父话题.

    3. 动作:

    无非增删改查.

    其实过去写接口, 没有玩到Session, 安全性的问题, 在这种php前后一起混着搞的项目中, 这些东西都要涉及并考虑到.

    例如权限, 可以细分到可怕的程度:

    https://laravel-china.org/courses/laravel-intermediate-training/5.7/product-decomposition/2601

    而权限的问题, 只要写好对应的policy, 在Laravel里面变得没那么困难了.

    $ composer config -g repo.packagist composer https://packagist.laravel-china.org

    compose加速.

    首先, 用composer创建项目, 这个目录在vagrant虚拟机和物理主机之间都要能访问到, 这样才能利用Win/Mac的IDE工具方便的编辑代码.

    $composer create-project laravel/laravel larabbs --prefer-dist "5.7.*"

    具体环境搭建, 下面这个链接:

    https://laravel-china.org/docs/laravel-development-environment/5.7

    修改Homestead.yaml这个构建文件, 增加新的虚拟站点和数据库名称, 同时修改host文件

    > cd ~/Homestead && vagrant provision && vagrant reload

     这里碰到第一个坑, 改yaml文件后, 无法provision了, 后来直接复制粘贴了下面的内容才行:

    ip: "192.168.10.10"
    memory: 2048
    cpus: 1
    provider: virtualbox
    
    authorize: ~/.ssh/id_rsa.pub
    
    keys:
        - ~/.ssh/id_rsa
    
    folders:
        - map: ~/Code
          to: /home/vagrant/Code
    
    sites:
        - map: homestead.test
          to: /home/vagrant/Code/Laravel/public
        - map: larabbs.test # <--- 这里
          to: /home/vagrant/Code/larabbs/public # <--- 这里
    
    databases:
        - homestead
        - larabbs # <--- 这里
    
    variables:
        - key: APP_ENV
          value: local

    修改了一下cpu数量跟RAM大小, 不然感觉vm不给力.

    接着修改根目录的.env文件

    APP_NAME=LaraBBS
    APP_ENV=local
    APP_KEY=your_app_key
    APP_DEBUG=true
    APP_URL=http://larabbs.test
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=larabbs
    DB_USERNAME=homestead
    DB_PASSWORD=secret
    
    CACHE_DRIVER=file
    SESSION_DRIVER=file
    QUEUE_CONNECTION=sync

    以及redis配置, 注意, 我们马上要玩redis了..

    如果hosts文件修改好了,直接访问larabbs.test应该可以看到默认首页了.

    如果看到提示说"No input file specified.", 检查yaml配置中的目录大小写.

    接着就是在github上创建repository, 方便备份. (这么说有点儿不对哈, 怎么能把git当备份工具呢?)

    然后修改config/app.php, 时区为"Asia/Shanghai", local为'zh-CN', 这样有些错误信息, 会由第三方的翻译插件翻译成中文.

    在composer.json文件的autoload里面加上自己新增的辅助函数文件app/helpers.php

        "autoload": {
            "psr-4": {
                "App\": "app/"
            },
            "classmap": [
                "database/seeds",
                "database/factories"
            ],
            "files": [
                "app/helpers.php"
            ]
        },

    然后用composer dump-autoload重新加载.

    接着, 先构建一个统一的前端布局layout文件, 在views/layout文件夹中

    app.blade.php, 主布局文件, 其他view都要继承它

    _header.blade.php和_footer.blade.php, 头尾布局

    _messages.blade.php, flash里面的消息.

    然后即使创建控制器:

    $ php artisan make:controller PagesController

    接着就是view跟路由.

    然后把前端任务自动化管理工具Laravel Mix用yarn 装好.

    $ yarn config set registry https://registry.npm.taobao.org
    $ yarn install
    $ cnpm run watch-poll

    就可以看到主页了.

    cnpm run watch-poll 会持续地关注scss, 有改动它会自动编译.

  • 相关阅读:
    CAFFE安装(3):cuDNN v4
    监测查询性能(1)
    SQL Server 中的三种分页方式
    使用DBCC SHOW_STATISTICS展示索引的统计信息
    查询表的分配单元数据
    Node.js中的事件
    node-mysql中的连接池代码学习
    Excel动态生成JSON
    使用SignalR实现比特币价格实时刷新
    使用Async同步执行异步函数
  • 原文地址:https://www.cnblogs.com/Montauk/p/10188592.html
Copyright © 2020-2023  润新知