所谓进阶, 刚摸了一个礼拜, 总体感觉容易上手, 很多已经实现的模块功能, 比如"记住我", "比如激活邮件", "比如用户认证"等等, 这些东西, 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, 有改动它会自动编译.