Laravel框架知识点

  1. MethodNotAllowedHttpException问题
    注意请求的方式.方式不匹配.

  2. TokenMismatchException 问题
    到app/Http/Kernel.php中 注释一段代码
    \App\Http\Middleware\VerifyCsrfToken::class,

  3. Route

    Route::get('/admin/user/delete/{id}', [
    'as' => 'udel', //小名
    'uses' => function(){ //这里的键名必须要使用uses才行
        echo '这里删除用户哦!!!';
    }
    ]);
    
  4. 配置404页面
    创建 Resource/views/errors/404.blade.php

  5. 中间件类文件的位置 app/Http/Middleware目录下

  6. 路径问题
    大原则:

     在html页面中引入元素的时候, css ,js, img 都应该使用绝对路径.  
     在php脚本中涉及脚本路径的时候, 应该尽量使用相对路径.  
    
  7. 隐式控制器的使用

     创建url路由规则
     Route::controller('/goods','GoodsController');
    
     GET /goods/add   ====>  GoodsController=>getAdd
     POST /goods/insert  =>  GoodsController=>postInsert
    
  8. 前台的url地址尽量的简介. 后缀尽量使用html

  9. 快速的打印函数 dd

  10. form表单中在上传文件的时候,一定要加上标签属性 enctype=”multipart/form-data”

  11. 原生的移动上传文件的函数 move_uploaded_file

  12. 在编程过程中, 对情况的检测非常的有必要.

  13. 在控制器方法中使用 return back(); 跳转到上一个页面

  14. 闪存的使用 主要是应用在form表单旧数据的显示.

    1. return back()->withInput();
    2. 在html表单中value属性值中填写, {{old('name')}}
  15. 闪存的简单使用

    1. 写入闪存 \Session::flash('name','value');
    2. 读取闪存 \Session::get('name');
  16. 涉及ajax请求返回的结果的时候, 都使用echo的方式返回内容.

  17. 使用ctrl+tab的方式切换编辑器的文件.

laravel应用

  1. 构建项目的流程
    建模 -> 流程图 -> 创建原型图(axure) -> 设计html页面 -> 嵌套程序

  2. 安装laravel框架(composer)

  3. 配置虚拟主机
  4. 建议首先搭建后台.

    1. 复制静态模板的html代码到blade模板中
    2. 复制静态模板所需要的css,js,图片内容到public目录(最好是创建一个单独的目录)
    3. 调整blade模板中的相关路径. (可以直接书写资源的绝对路径, 也可以使用asset函数进行路径设置)
  5. 调整模板 (该删除的删除(内容区),该调整的调整 (logo) )

  6. 将修改好的模板,存入到一个独立的文件夹中(layout(布局的意思))

  7. 其他页面如果需要用带该ok的模板, 只需要继承即可.

  8. 调整html代码中的url地址 (user/add), 添加路由规则( Route::get('/user/add,...)), 如果没有控制器要首先创建控制器 make:controller.

  9. 创建用户的添加页面 , 使用继承的方式来构建, 通过section的方式标记, 复制一份静态模板中的表单元素到新模板中的section即可.

  10. 调整form表单中的内容, 名称,name值.

  11. 在post类型的表单中,需要添加隐藏域元素 {{csrf_field()}}

  12. 解决tokenmismatch 异常的两种方式

    1. 注意kernel.php中的\App\Http\Middleware\VerifyCsrfToken::class,
    2. 在post的请求中 ,添加隐藏域 {{csrf_field()}}
  13. Access denied for user ‘homestead’@’localhost’
    这个时候是因为没有修改数据库配置而导致的.

  14. 在后台存储图片路径时,尽量使用绝对路径. (eg:/uploads/1.jpg)

  15. 由客户端请求过来的数据一定要做好检测.

  16. 后台快速填充数据的方式

    1. insert into users (username,password, profile,email,sex) (select username,password,profile,email,sex from users)
    2. 数据填充
      步骤:
       1.创建注入文件  `php artisan make:seeder UserSeeder`  (app/database/seeders)  
       2.在类文件中书写注入代码.  
       3_1. `php artisan db:seed --class=UserSeeder`  
       3_2.   
           可以在`DatabaseSeeder.php` 中添加代码  
           `$this->call(UserSeeder::class)`;  
           我们就可以使用   
           `php artisan db:seed`  
      
  17. laravel框架的编译文件在 app/storage/framework/views/

  18. 手动验证表单

    $this->validate($request, [
            'username' =>'required|regex:/^\w{8,18}$/|unique:users,username',
            'password' => 'required|regex:/^\S{6,20}$/|same:repassword'
        ],[
            'username.required' => '用户名不能为空',
            'username.regex' => '用户名格式不正确',
            'password.regex'=>'密码格式不正确',
            'password.same'=>'两次密码不一致'
        ]);
    
  19. 404页面配置 views->errors->404.blade.php 创建即可 (建议使用寻人启事内容)

  20. sublime安装artisan 插件
    ctrl+shift+p -> install -> laravel 5 artisan
    使用
    ctrl+shift+p -> make:controller

  21. 搜索一些laravel和bootstrap的插件 (选作)

  22. 针对遍历

    $arr = [1,2,3,4,5,6];
    foreach($arr as $k => &$v) {
        // $arr[$k] *= 2;
        $v *= 2;
    }
    

    可以使用这样的方式进行遍历和操作

  23. Undefined variable: cates (View: F:\wamp\www\class\lamp159\laravel\project\resources\views\admin\cate\edit.blade.php)
    遇到类似这样的问题, 根据文件提醒查找文件.
    ctrl+p 在当前项目下查找文件
    ctrl+g 在文件中定位行.

  24. 源代码是调试问题的分水岭.

  25. 商品和商品的图片是 一对多的关系. 一个商品里有多个图片, 这个时候可以将多的内容单独的存入一张表进行管理.

  26. sublime插件安装

    1. 按Ctrl+`调出console(注:安装有QQ输入法的这个快捷键会有冲突的,输入法属性设置-输入法管理-取消热键切换至QQ拼音)
      粘贴以下代码到底部命令行并回车:
      2.import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read()
      重启Sublime Text 3。
      如果在Perferences->package settings中看到package control这一项,则安装成功。
  27. 百度编辑器的使用流程
    方式一
    1. 复制编辑器所需要的文件到public目录下
    2. 引入js文件
    3. 创建编辑器容器 ( <script id="editor" type="text/plain" style="width:800px;height:500px;"></script>)
    4. 实例化容器 (var ue = UE.getEditor(‘editor’);)
      方式二
      查看文档, 根据文档的提示进行配置.
  28. 修改编辑器所上传的文件路径.
    修改ueditor目录下的php目录下的config.json
    “imagePathFormat”: “/uploads/{yyyy}{mm}{dd}/{time}{rand:6}”, / 上传保存路径,可以自定义保存路径和文件名格式 /
  29. 采集数据的思路
    1. 检测源代码中是否包含我们所需要的数据
      http://www.meilishuo.com/search/catalog/10059473?action=clothing&mt=12.13045.r127333.16254&acm=3.mce.2_10_182f4.13045.0.9zMq2FOr5aN.m_188164&ptp=1.zfrD1b.indexhotcate_mls_%20_%E5%8D%AB%E8%A1%A3.2.o1vln
      http://www.meilishuo.com/search/catalog/10059473?ptp=1.f0zim.0.0.qwIpg&acm=3.mce.2_10_182f4.13045.0.9zMq2FOr5aN.m_188164&mt=12.13045.r127333.16254&action=clothing&page=2&cpc_offset=0
    2. 如果有 直接采集源代码, 如果没有查看firebug 请求连接.
  30. curl是一个php扩展, 用来在脚本中模拟请求.
  31. 请求头 Referer 是表示来源的意思.
  32. git简单的使用
    git clone https://git.oschina.net/xiaohigh/lamp159.git
    • 开发代码
      git add .
      git commit -m 'message zhushi'
      git push
    • 更新代码
      git pull
  33. 免密码提交
    1. 生成非对称密钥
      ssh-keygen -t rsa -C "779498590@qq.com"
    2. 将公钥内容复制到码云的ssh公钥位置(添加公钥)
    3. 在本地的git下添加远程仓库
      git remote add name git@git.oschina.net:xiaohigh/lamp159.git
    4. git push name
    1. 配置ssh密钥
    2. 克隆代码
      git clone git@git.oschina.net:xiaohigh/lamp159.git
    3. git push
      git pull
  34. 在做前段页面的数据提交时, 首先做好前端的js验证,然后在服务器端也要做好表单验证.

  35. 发送邮件功能

    1. 配置

       MAIL_DRIVER=smtp
       MAIL_HOST=smtp.163.com
       MAIL_PORT=25
       MAIL_USERNAME=love_lamp@163.com
       MAIL_PASSWORD=abcd1234
       MAIL_ENCRYPTION=null
      config/mail.php
       'from' => ['address' => 'love_lamp@163.com', 'name' => null],
      
    2. 使用代码

       Mail::send('home.jihuo', ['data'=>$data], function ($m) use ($data)  {
           $m->to($data['email'], $data['username'])->subject('159商城注册成功提醒邮件');
       });
      

      faq:

      1. 邮箱账号先注册(建议使用163账号)
      2. 设置账号
        邮箱后台 -> 设置 -> POP3/SMTP/IMAP -> 勾选POP3/SMTP服务 IMAP/SMTP服务 -> 设置客户端授权密码(左侧下)
      3. send方法的使用方式前两个参数跟view的使用方式是一模一样的, 如果需要在第三参数(匿名函数)中,使用脚本变量, 必须要use

    待完善:

    用户的激活位置需要加一个验证参数(随机字符串,保证唯一性)  
    找回密码位置也是一样要使用上唯一的字符串标识.  
    remind:  
        `http://nb.com/reset?id=12`  
        `http://nb.com/reset?id=12&token=121ljsdklusfjslkdjlskhaida (str_random(50))`  
    
  36. 百度分享
    http://share.baidu.com 到该网站按照流程输入即可.

  37. qq在线聊天
    http://shang.qq.com/v3/widget.html 根据提示进行配置即可