美文网首页我爱编程
Laravel 笔记后续写个简单博客

Laravel 笔记后续写个简单博客

作者: zz77zz | 来源:发表于2018-04-16 11:22 被阅读34次

1.安装composer

composer create-project laravel/laravel <yourprojectname>
cd your project name
php artisan serve


目录结构

目录结构

重要文件

2.Artisan命令

独家定制的命令行工具快速生成Laravel常用文件和相关相关配置

常用artisan命令.png

3.路由

定义路由

app/Http/routes.php

  • 第一种方式 返回字符串
Route::get('/hello', function () {
    return '<h2>Hello world!!!</h2>';
}); 
  • 第二种方式
    1. 在resource文件夹下创建welcome.blade.php 就可以渲染
      Route::get('/hello', function () {
        return view('welcome')
      });
      
    2. 在web.php 下定义运行指定Controller的方法 (下面的例子就是运行PageController下的定义的about方法)
      Route::get('/about','PageController@about');
      
    3. 在web.php 下定义所有方法
      Route::resource('posts','PostController');
      // 这是PostController下定义的所有方法
      class PageController extends Controller
        {
            public function index(){
                $title = 'Welcome to Index';
                // return view('pages.index',compact('title'));
                return view('pages.index')->with('title',$title);
            }
      
            public function about(){
                $title = 'Welcome to About';
                return view('pages.about')->with('title',$title);
            }
      
            public function service(){
                $data = array(
                    'title' =>'Services',
                    'name' =>['Aili','Taylor','Jone']
                );
                return view('pages.services')->with($data);
            }
        }
      
      

路由方法

POST GET DELETE PUT 除此之外还有match
Route::match(['get', 'post'],'/foo', function () {
// 该路由将匹配 get 和 post 方法的 'foo' url
});

路由参数

Route::get('name/{name}/age/{age}', function ($name, $age) {
return 'Im '.$name.' ,and Im '.$age;
});

路由 正则限制路由、命名路由、路由群组


4.控制器

php artisan make:controller UserController
打开就会看到默认创建的6个方法index() create() store() show() edit update destroy。,也就是CURD(增删改查)
Route::get('/user/name', 'UserController@name');
在UserController下创建name方法

控制器依赖注入

use App\Http\Requests;
use App\Http\Controllers\Controller;


5.中间件

对请求加限制,只允许某些请求能够到达控制器 中间件就起作用了。

例如 Auth验证用户的身份 如果用户未通过身份验证 中间件将会把用户导向登录页面,反之中间件将此请求通过且接着往下执行

内置了很多中间件,包括维护、身份验证、CSRF保护 中间件都会放在app/Http/Middleware

创建中间件

1.php artisan make:middleware Young

2.app/Http/Midlleware/Young.php增加过滤条件

{
    // 如果传入的参数 age 大于25,重定向到'/'
    if ($request->age > 25) {
        return redirect('/');
    }
    return $next($request);
}

3.注册中间件

打开 app/Http/Kernel.php

在$routeMiddleware=[]中添加
'young' => \App\Http\Middleware\Young::class,

  1. 添加中间件
    route.php中
    Route::get('young/{age}','UserController@young')->middleware('young')

然后在UserController添加young方法就ok


6.视图模板

存放在resource/views目录下

模板继承

  1. resource/views创建新目录layouts然后在resource/views/layouts下创建母视图文件app.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>ASD</title>
</head>
<body>
@yield('content')
</body>
</html>
  1. resource/views/pages下创建子文件text.blade.php 继承asd母模板 而且可以添加子视图
@extends('layouts.asd')
@section('content')
    <h1>ASD</h1>
    <p>This is ASD player!!!</p>
    <p>Author: Elyar</p>
    <!-- 可以更改为你自己的信息 -->
    
    @include('shared.author',[这里的数组里可以传入子视图需要的数据])
@endsection
  1. 传入数据
Route::get('greeting', function () {
    return view('welcome', ['name' => 'Samantha']);
});

//在welcome文件中使用传入数据
{{$name}}
  1. 条件渲染
@if (count($records) === 1)
    我有一条记录!
@elseif (count($records) > 1)
    我有多条记录!
@else
    我没有任何记录!
@endif
//循环
@for ($i = 0; $i < 10; $i++)
    目前的值为 {{ $i }}
@endfor

@foreach ($users as $user)
    <p>此用户为 {{ $user->id }}</p>
@endforeach

@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>没有用户</p>
@endforelse

@while (true)
    <p>我永远都在跑循环。</p>
@endwhile

7.数据库

Mysql Postgres SQLite SQLServer数据库
在主目录的.env文件 可以配置数据库

8.模型(MODEL) & Eloquent

数据交互Eloquent

8.1创建模型

php artisan make:model Article

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    //这里可以写数据库表名和字段等等
    protected $table = 'users';
    protected $fillable = ['name', 'password'];
}

8.2数据读取

<?php

use App\User;

//取出所有数据
//$users = App\User::all();
//获取active字段为1的数据 按照age排序
$users = App\User::where('active', 1)
               ->orderBy('age', 'desc')
               ->take(10)
               ->get();

foreach ($users as $user) {
    echo $user->name;
}

Eloquent ORM 模型 方法还有很多 其他的就按照开发需求去官网学习即可
Tinker REPL(交互式命令行界面)
php artisan tinker

$user = new App\User;
$user -> name = 'SadCreeper';
$user -> email = '12345@qq.com';
$user -> password = 'password';
$user -> save();

案例 迷你博客

项目需求

  • 需求分析:我们的迷你博客应该至少包含:新增/编辑/查看/删除文章,以及文章列表展示功能。
  • 数据库分析:基于这个功能,我们只需要一张 Articles 数据表来存放文章即可。
  • 页面结构分析:应该使用模板继承建立一张基础模板包含:导航栏/底部信息栏/作者信息等。

未完待更新


相关文章

网友评论

    本文标题:Laravel 笔记后续写个简单博客

    本文链接:https://www.haomeiwen.com/subject/sgiskftx.html