您的位置:首页 > 编程语言 > PHP开发

Laravel5入门

2016-03-29 17:52 761 查看
Laravel框架的安装见[windows下安装Laravel5]

1.Laravel路由

大多数路由都将在 app/Http/routes.php 中定义,大多数基本的 Laravel 路由都只接受一个 URI 和 一个 闭包(Closure) 参数。

Route::get('/','WelcomeController@index')

Route: 声明一个路由;
get:即定义一个GET路由,除get外,还有post、put、delete路由;
/:即指向网站
WelcomeController@index:前面是控制器,后面是调用控制器中的方法


2.返回视图

视图文件在resources/views/welcome.blade.php

public function index(){
return view('welcome');//显示welcome视图
}


返回控制器的某个视图

return view('pages.index');
return view('pages/index');


3.定义路由

//单项定义
Route::get('/contact','WelcomeController@contact');

//统一定义(resource),会生成7中restful风格的action
Route::resource('articles', 'ArticlesController');

//子文件夹路由
Route::resource('admin/user', 'admin\UserController');


4.创建控制器

php artisan make:controller PagesController

在app/Http/Controllers/下生成文件,同时生成方法index()、create()、store()、show($id)、edit($id)、update($id)及destroy($id)

//不生成方法
php artisan make:controller PagesController --plain

//在某个文件夹下生成控制器
php artisan make:controller admin/PagesController


5.创建模型

//在app/下生成User.php
php artisan make:model User

/*
*修改模型目录,注意namespace
*在app/Models/下生成对应文件
*/
php artisan make:model Models/User

//注意设置
protected $fillable = [表字段];


6.操作migration

php artisan make:migration create_users_table

//参数
--create=users, 生成一个新表
--table=users,更新表结构
生成目录,database/migrations/

//执行migration
php artisan migrate

//回滚上一个migration
php artisan migrate:rollback

//执行回滚所有迁移
php artisan migrate:reset

//执行回滚所有迁移并重新执行
php artisan migrate:refresh


8.关联关系

基本可以分为:一对一、一对多及多对多

public function articles(){
//这是一个hasMany关联关系
return $this->hasMany('App\Article');
}

//这是一个hasOne关联关系
public function user(){
return $this->belongsTo('App\User');
}


当然也可以指定关联字段

public function getCategory(){
return $this->hasOne('App\Models\Category','id','category_id');}


视图层调用:$model->getCategory;返回一个查询对象object

9.外键

新建migration迁移文件,添加字段和外键

//添加外键,做级联删除
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});


10.密码处理

用户密码必须要进行加密操作,bcrypt() 方法也可以用 Hash::make() 来替代

11.表单验证

1.自定义验证类

php artisan make:request UpdateUPostRequest


生成文件位于 app\Http\Requests\ 下类里面有两个方法: authorize() 和 rules(),authorize() 方法验证用户是否有权限执行此FormRequest 类或者方法.

另外是rules()方法

publicfunction rules()
{
return[
'title'=>'required|min:3',
'content'=>'required',
];
}
//使用方法:
publicfunction store(UpdatePostRequest $request){
Article::create($request->all());
return redirect('articles');
}


2.调用validator()方法

控制器中调用

$this->validate($request,['title'=>'required|unique|max:255','body'=>'required',]);


12.表单模型绑定

表单模型绑定

{!!Form::model($article,['method'=>'PATCH','action'=>['ArticlesController@update', $article->id]])!!}


13.中间件 middleware

中间件文件位于 app/Http/Middleware/ 目录下

可以通过app/Http/Kernel.php 注册中间件,每一个请求都要执行的添加到 $middleware中,而只在特殊位置需要的添加到$routeMiddleware 中。

自定义中间件步骤:

1. php artisan make:middelware Demo
2. 在目录下app/Http/Middleware/下打开Demo.php,修改handle()函数
3. 在app/Http/Kernel.php中注册Demo中间件,注意,如果每一个请求都要执行该中间件,注册在$middleware, 特殊的注册在 $routeMiddleware.


例如:

public function handle($request, Closure $next)
{<
fc86
/span>
if($request->is('articles/create') && $request->has('foo')){
return redirect('articles');
}
return $next($request);
}


14.简单权限控制

控制器中使用中间件,可以在路由文件中指定middleware,也可以在控制器的构造函数中指定。

Route::get('profile',['middleware'=>'auth','uses'=>'UserController@showProfile'    ]);

或者
public function __construct(){
//除了主页之外
$this->middleware('auth', ['except' => ['index','show']]);
//只有发布页
//$this->middleware('auth', ['only' => 'create']);
}


15.flash messaging

Session::flash() 方法是暂存数据的一种方法,它只在下次请求的时候有效。也就是说下次请求完成之后,该数据即消失。

\Session::flash('success','文章发布成功');

//在布局文件中判断和显示
@if(Session::has('success'))
<div class="alert alert-success">{{Session::get('success')}}</div>
@endif

@if(Session::has('success'))
<div style='width:100%; background:#CCFFCC' class="alert alter-success">{{Session::get('success')}}</div>
@endif

//引入jQuery CDN后,设置显示时间
<script type="text/javascript">
$('div.alert').not('.alert-important').delay(3000).slideUp(300);
</script>

//文件重用
在views文件夹下新建 partials文件夹,创建 flash.blade.php
@if(Session::has('success'))
<div style='width:100%; background:#CCFFCC; text-align:center;' class="alert alter-success">{{Session::get('success')}}</div>
@endif

在main.blade.php中引入即可,@include('partials.flash')

另一种方法是composer require laracasts/flash
还可以使用 Bootstrap 的 modal() 方法


16.请求 Request

use Request;
$name = Request::input('name');

//依赖注入,获取请求实例
public function store (Request $request){$name=$request->input('name'); //
}

//取得特定输入数据,若没有则取得默认值
$name = Request::input('name','Sally');

//确认是否有输入数据
if(Request::has('name')){ //}

//取得所有发出请求时传入的输入数据
$input=Request::all();

//取得部分发出请求时传入的输入数据
$input=Request::only('username','password');$input=Request::except('credit_card');

//如果是「数组」形式的输入数据,可以使用「点」语法取得数组:
$input=Request::input('products.0.name');


17.引入身份验证类Auth

user Auth;
当前用户 Auth::user()->id;


18.数据查询

//数据查询
$users=User::all();
$user=User::find(1);

//有时, 您可能想要在找不到模型数据时抛出异常,通过 firstOrFail 方法。
$model=User::findOrFail(1);
$model=User::where('votes','>',100)->firstOrFail();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Laravel5 入门知识