欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laravel框架使用生涯

程序员文章站 2022-03-14 16:37:20
...

手工安装laravel

http://laravelacademy.org/resources-download

1、将下载的文件复制到虚拟主机目录
laravel框架使用生涯
2、在Apache的配置文件配置一个虚拟主机【注意,需要指向 public目录下】

<VirtualHost *:80>
    DocumentRoot "C:\phpStudy\WWW\laravel.dev\public"
    ServerName laravel51.dev
    ServerAlias phpStudy.net
  <Directory "C:\phpStudy\WWW\laravel.dev\public">
      Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
      Require all granted
  </Directory>
</VirtualHost>

3、配置hosts文件

127.0.0.1 laravel51.dev

4、浏览器访问效果
laravel框架使用生涯

laravel目录结构分析

整体目录

laravel框架使用生涯

app目录

laravel框架使用生涯

http目录

laravel框架使用生涯

config目录

config目录:主要是存放配置文件信息,laravel的配置信息是分文件保存的。
laravel框架使用生涯

database目录

database目录:数据迁移和种子文件。
laravel框架使用生涯
例如某个数据迁移文件:在项目开发和测试阶段使用的较多,上线之后基本不用。
laravel框架使用生涯

public目录

public目录:单入口和系统的静态资源(css、img、js、uploads)
laravel框架使用生涯

resource目录

resources目录:存放视图文件。
laravel框架使用生涯

storage目录

storage目录:主要是存放缓存文件和日志文件,需要注意:如果是在Linux环境下,该目录需要有可写的权限
laravel框架使用生涯

vendor目录

vendor目录:主要是存放第三方的类库文件,laravel思想主要是共同的开发,不要重复的造*(例如:里面可能存在验证码类、上传类、邮件类),还需要注意该目录还存放laravel框架的源码。注意:如果使用的composer软件管理的,composer下载的类库都是存放在该目录下的。

laravel框架使用生涯

.env文件

.env文件:主要是设置一些系统相关的环境配置文件信息。config目录里面的文件配置内容一般都是读取该文件里面的配置信息(config里面的配置项的值基本都是来自.env文件)。
laravel框架使用生涯

laravel入门使用

1、路由简介

因为laravel是一个重路由的框架。

什么是路由?
答:路由就是用户在地址栏里面输入一个url地址后,交给后端的那个控制器下的那个方法进行处理的规则。一般我们需要在专门的路由文件里面,进行定义好。

为什么要使用路由?
答:laravel里面路由。最新的 TP5里面也是存在路由。
好处:

1、url地址变得非常的美观。(以前没有路由都是通过伪静态处理)
2、隐藏网站的目录结构(t.cn/goods/index.php ?)(index.php?m=Home&c=User&a=lst)
3、防范网络攻击…

路由文件在哪里,以及规则如何编写?

laravel框架使用生涯

2、路由入门使用

// laravel内置了一个Route类,提供了很多方法 一般是根据http的请求来命名 
// 例如: 1. get 2. post 3. any 4. match .....
// get方法是处理 get请求 第一个参数:代表是请求的url地址的uri部分 
// 第二个参数:1. 匿名函数 2. 字符串(控制器下的某个方法)

// 1. 匿名函数 返回值作为http的响应返回给浏览器
// 2. 控制器里面的方法执行作为响应

// url:http://local.laravel51.com/
Route::get('/', function () {
  return 'hello';
    // return view('welcome');
});

// url:http://local.laravel51.com/about
Route::get('/about', function () {
  return 'about';
    // return view('welcome');
});

3、视图使用

视图载入
学习:

1、视图写在哪里?
2、视图文件如何命名?
3、视图里面的内容和编写?
4、视图是否可以分目录管理?
5、视图如何被载入?
6、如何视图赋值?
laravel框架使用生涯

效果:

laravel框架使用生涯

4、blade模板引擎

1、在routes.php里面定义一个/user/login路由
laravel框架使用生涯
2、建立 login.blade.php视图文件
laravel框架使用生涯
3、在routes.php里面定义一个/blade路由
laravel框架使用生涯
4、建立 show.blade.php视图文件
laravel框架使用生涯
5、注意:laravel模板引擎和 vuejs的冲突解决

代码
routes.php路由文件

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
// laravel内置了一个Route类,提供了很多方法 一般是根据http的请求来命名 例如: 1. get 2. post 3. any 4. match .....
// get方法是处理 get请求 第一个参数:代表是请求的url地址的uri部分 第二个参数: 1. 匿名函数 2. 字符串(控制器下的某个方法)
// url:http://local.laravel51.com/
// 1. 匿名函数 返回值作为http的响应返回给浏览器
// 2. 控制器里面的方法执行
Route::get('/', function () {
  return 'hello';
    // return view('welcome');
});

// url:http://local.laravel51.com/about
Route::get('/about', function () {
  return 'about';
    // return view('welcome');
});

// 1. 视图写哪里? 2. 视图文件名如何命名  3. 视图里面内容 4. 视图是否可以分目录管理 5. 视图如何被载入 6. 如何视图赋值
// url:http://local.laravel51.com/user/login
Route::get('/user/login', function () {
  // view() 函数是用于载入视图的 视图写在哪里? 如何命名?
  // /resources/views/视图文件名称.blade.php  文件的后缀 .blade.php必须这样,因为laravel内部使用的一个模板:blade
  $info = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod consequatur nisi excepturi debitis mollitia autem quis dolores error nulla, ea cumque vero quas beatae eveniet molestias expedita cupiditate. Itaque, culpa!'; // 赋值
  $title = 'Lorem ipsum dolor sit amet, consectetur.';
  // 两种方式:
  // with 第一个参数是视图调用名称 第二个参数变量信息
  // 第二种: 直接给view函数传递第二个参数,关联数组,key视图调用名称 value变量信息
  $key = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Officiis alias assumenda dolorum vel animi quo mollitia possimus neque quod illum!';
  $age = 12;
  // 复合数据类型 [] 数组 php5.4语法
  $userData = [
    ['id' => 1, 'username' => 'Lorem ipsum dolor sit amet, consectetur adipisicing.'],
    ['id' => 2, 'username' => 'Lorem ipsum dolor sit.'],
    ['id' => 3, 'username' => 'ruby'],
  ];

  // 通过赋值操作可以在视图里面显示数据信息,但是通过第二种方式写起来还是很麻烦。 key value key value
/*    return view('home.user.login', ['key' => $key, 'age' => $age, 'userData' => $userData])
      ->with('info', $info)
      ->with('title', $title); 
*/    // 文件夹的分隔符使用的 /  laravel建议使用 .

    // 赋值简化操作
    // compact('info', 'title', 'key', 'age', 'userData') 可以将数据转换为 关键数组 参数:是变量名
    return view('home.user.login', compact('info', 'title', 'key', 'age', 'userData'));

});


// 视图里面的模板引擎 blade 1. 基本数据输出 2. 复合数据类型输出 3. 逻辑判断

Route::get('/blade', function ()
{
  $title = '模板引擎';

  $userData = [
    ['id' => 1, 'username' => 'Lorem ipsum dolor sit amet, consectetur adipisicing.'],
    ['id' => 2, 'username' => 'Lorem ipsum dolor sit.'],
    ['id' => 3, 'username' => 'ruby'],
  ];
  $isBoolean = false;
  $info = '这个是真的!';


  return view('show', compact('title', 'userData', 'info', 'isBoolean'));

});

show.blade.php视图文件
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
  <script src="https://cdn.bootcss.com/jquery/2.0.1/jquery.js"></script>  
  <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
  
  <title>blade模板引擎</title>
</head>
<body>
  <div class="container">
    <h2>原生PHP</h2>
    <hr>
    <p><?php echo $title;?></p>
    <hr>
    {{-- 短标记语法PHP --}}
    <p><?= $title;?></p>
    <hr>
    <h2>blade模板引擎</h2>
    {{-- 这两个大括号被叫做 插值表达式,计算内部的表达式,最终的结果放置在这里 --}}
    {{-- vuejs 也是使用的插值表达式 --}}
    <p>{{ $title }}</p>
    <p>{{  1 + 1 }}</p>
    <p>{{  3 * 8 }}</p>
    <h2>逻辑运算</h2>
    <p>{{ !false }}</p>
    {{-- 三目运算 --}}
    <p>{{ 1 > 2 ? '假的' : '真的' }}</p>
    <hr>
    <h1>复合数据类型输出</h1>
    @foreach ($userData as $v)
      <li>序号: {{  $v['id'] }} 姓名: {{ $v['username'] }}</li>
      <hr>
    @endforeach
    <hr>
    @if ( $isBoolean )
      {{  $info }}
    @endif
    <hr>
    @if ( $isBoolean )
      这个是真的...........
    @else
      假的的...........
    @endif
  </div>
  {{-- 问题: laravel和 vue 相遇了  --}}
  <div class="container">
    <div id="box">
      {{-- 不想让 laravel进行解析,前端vuejs 在浏览器里面解析 --}}
      {{-- vuejs 前端MVVM框架 --}}
      <p>@{{  msg }}</p>
    </div>
  </div>
</body>
<script src="https://cdn.bootcss.com/vue/1.0.23/vue.js"></script>
<script type="text/javascript">
  new Vue({
    el: '#box',
    data: {
      'msg' : 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint, distinctio doloremque assumenda dicta veritatis repellendus maxime ut commodi ipsum necessitatibus ullam nihil! Saepe ab labore aliquam facilis placeat id incidunt.'
    }

  });
</script>
</html>

login.blade.php视图文件
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet">
  <script src="https://cdn.bootcss.com/jquery/2.0.1/jquery.js"></script>  
  <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.js"></script>
  <title>user-login页面</title>
</head>
<body>
  <div class="container">
    <h1 class="page-header">user-login页面</h1>
    <hr>
    <h2>原生PHP</h2>
    <?php echo date('Y-m-d H:i:s');?>
    <hr>
    <h2>blade模板引擎</h2>
    <p>{{ time() }}</p>
    <hr>
    <p><?php echo $info;?></p>
    <hr>
    <p class="well"><?php echo $title;?></p>
    <hr>
    <p class="well"><?php echo $key;?></p>
    <hr>
    <p><?php echo $age;?></p>
    <hr>
    <h2>复合数据类型: 数据遍历操作</h2>
    <ul>
      <?php foreach ($userData as $v): ?>
        <li>序号: <?php echo $v['id'];?> 姓名: <?php echo $v['username'];?></li>
        <hr>
      <?php endforeach ?>
    </ul>
  </div>
  
  
  <div class="container">
    <form action="" method="POST">
      <div class="form-group">
        <label for="username">用户名:</label>
        <input type="text" name="username" id="username" class="form-control" value="">
      </div>
      <div class="form-group">
        <label for="password">密码:</label>
        <input type="password" name="password" id="password" class="form-control" value="">
      </div>
      <div class="form-group">
        <input type="submit" value="提交" class="btn btn-success">
        <input type="reset" value="清空" class="btn btn-danger">
      </div>
    </form>
  </div>
</body>
</html>

4、控制器使用

通过上面的操作,我们发现基本将代码都写在routes.php路由文件,这样不利于后期的开发和维护。一般会将用户的请求交给控制器下的某个方法来处理。在方法里面完成业务逻辑。

思考:
1、控制器写在哪里?
2、控制器文件名如何命名?
3、控制器里面的内容如何编写?
4、控制器里面如何载入视图?
5、控制器里面如何赋值?
6、控制器里面的方法如何被调用?
7、如何在控制器里面实例化模型?
8、如何通过模型获取数据?

5、artisan命令-控制器

使用 artisan 命令生成控制器的默认行为

laravel框架使用生涯

效果:

laravel框架使用生涯

代码内容:

laravel框架使用生涯

使用 artisan 命令生成控制器的不要带方法

laravel框架使用生涯

代码内容:

laravel框架使用生涯

使用 artisan 命令生成控制器的分目录管理

laravel框架使用生涯

代码内容:

laravel框架使用生涯

常见错误

加***生成

laravel框架使用生涯

解决:

laravel框架使用生涯

404错误

如果没有在路由文件里面定义路由规则,直接请求,会提示如下的信息:
laravel框架使用生涯

相关标签: Laravel