Open evantianx opened 7 years ago
即路由功能。
// routes/web.php
Route::get('/', function(){
return view('welcome');
})
也可以添加控制器来取代函数:
# 默认为plain
# 添加--resource后可以加index()、create()等函数
php artisan make:controller SitesController
之后在Http/Controllers
下可以找到生成的控制器SitesControllers.php
,对其进行修改:
//省略部分代码
public function index(){
return view('welcome')
}
此时即可修改路由为:
Route::get('/', 'SitesController@index');
注: 第二个参数表示, 首先找到控制器
SitesController
,然后运行其中的方法index
具体来说,有三种方法:
with()
方法
//SitesControllers.php
public function about() {
$name = 'Rubicker';
return view('sites.about')->with('name', $name)
}
//在about视图中:
<h1>About me {{ $name }}</h1>
利用了自带的blade模版引擎
{{ $name }}
会进行转义,而{!! $name !!}
不进行转义(若变量中存在HTML标签,会直接输出)
用数组传递多个变量
//first,last为模版中变量名
public function about() {
return view('sites.about')->with([
'first' => 'John',
'last' => 'Locke'
])
}
view()
方法作为变量
//此时视图模版中的变量名为first和last,而非data
public function about(){
$data = [];
$data['first'] = 'John';
$data['last'] = 'Locke';
return view('sites.about', $data);
}
compact()
方法
public function about(){
$first = 'John';
$last = 'Locke';
return view('sites.about', compact('first', 'last'));
}
对重复内容的简略写法
在resources/views
中创建一个app.blade.php
:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,
user-scalable=no, initial-scale=1.0,
maximum-scale=1.0,
minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
@yield('content')
</body>
</html>
之后如何引用这个模版呢?举例说明
@extends('app');
@section('content')
<h1>Hello</h1>
@stop
条件语句的写法
@if ... @endif
循环语句的写法
@foreach()...@endforeach
数据库操作:
# 开启服务
mysql.server start
# 登陆数据库
mysql -h localhost -u root -p
# 创建数据库 laravel
create datebase laravel;
# 显示所有数据库
show databases;
# 切换到 laravel 数据库
use laravel;
在项目目录下的.ENV
文件中对数据库进行配置,配置成功后即可执行下列命令:
# 生成数据格式
php artisan migrate
想要修改某个数据类名,应该如何做:
php artisan migrate:rollback
# 修改完成后
php artisan migrate
# 创建一个名为 comments 的表
php artisan make:migration create_comments_table --create=comments
# 为 comments 表添加一个like 字段
php artisan make:migration add_like_column_to_table --table=comments
Laravel 的 Eloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库进行交互。每个数据库表都有一个对应的「模型」可用来跟数据表进行交互。你可以通过模型查询数据表内的数据,以及将记录添加到数据表中。 所有的 Eloquent 模型都继承自 Illuminate\Database\Eloquent\Model 类。
创建:
# 上节中创建了 comments 表,laravel 会自动识别并关联到该表
php artisan make:model Comment
之后进入命令行利用 tinker 操作:
# 开启 Psy Shell
php artisan tinker
# 创建一个实例
$comment=new App\Comment
# 添加数据
$comment->username='Rubicker'
$comment->content='haha'
$comment->published_at=Carbon\Carbon::now()
$comment->like=1
# 储存于数据库中
$comment->save()
将数据展开成数组查看:
$comment->toArray()
查找数据:
# 传入id进行查找,之后用 $first 即可进行增删改查
$first=App\Comment::find(1)
# 通过某个字段进行查找,第二个参数 = 可以省略,返回一个 collection 类
$second=App\Comment::where('content','=','haha')
上述这样创建一条数据的方法看起来比较麻烦,有没有一次性填入多条数据的方法呢?
$comment=App\Comment::create(['username'=>'you','content'=>'hehe','published_at'=>Carbon\Carbon::now(),'like'=>2])
直接输入上述命令会报错,原因在于Comment.php
中没有指定可填充的字段。
class Comment extends Model
{
// 定义可填充内容
protected $fillable=['username', 'content', 'published_at', 'like'];
}
更新数据:
$comment->update('username', 'him')
首先创建一个 CommentsController:
php artisan make:controller CommentsController
注册路由:
Route::get('/comments', 'CommentsController@index')
在CommentsController.php
中写入index
方法:
public function index()
{
# 获取所有数据,默认以 JSON 格式展示
$comments=Comment::all();
return $comments;
}
注意要在
CommentsController
中添加use App\Comment;
我们可以return
一个视图,并将变量传入:
return view('comments.index', compact('comments'));
之后在vendor/view
下定义视图,处理传入变量:
// app作为一个模版使用
@extends('app')
@section('content')
<h1>这是评论区</h1>
<hr>
@foreach($comments as $comment)
<h2><a href="#">{{ $comment->username }}</a></h2>
<article>
<div class="body">
{{ $comment->content }}
</div>
</article>
@endforeach
@stop
为每条 comment 添加一个路由,并创建其视图:
Route::get('/comments/{id}', 'CommentsController@show');
// CommentsController.php
public function show($id)
{
$comment=Comment::findOrFail($id);
return view('comments.show', compact('comment'))
}
// view/comments/show.blade.php
@extends('app')
@section('content')
<h1>{{ $comment->like }}</h1>
<article>
<div class="body">
{{ $comment->content }}
</div>
</article>
@stop
那么我们应该如何处理index.blade.php
中每条评论链接呢?
// 直接写
<h2><a href="/comments/{{ $comment->id }}">{{ $comment->username }}</a></h2>
// 利用 url()
<h2><a href="{{ url('comments', $comment->id) }}">{{ $comment->username }}</a></h2>
// 利用 action()
<h2><a href="action('CommentsController@show', [$comment->id])">{{ $comment->username }}</a></h2>
Laravel 安装
首先安装 wamp 和 composer ,装好之后利用 composer 这个依赖管理器来安装 laravel :
利用 php 内置服务器
利用 php artisan