sunface

Laravel 框架

laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持、隐式模型绑定、简化 Eloquent 全局作用域、可选择的认证脚手架、中间件组、访问频率限制、数组输入验证优化等等。

一、 Compose安装laravel

compose下载http://www.phpcomposer.com/

环境要求:安装之前先确定您的环境是否是php5.4以上,最好是php7,推荐使用xampp。并且php要打开openssl

安装laravel

改镜象,避免FQ:
composer config -g repo.packagist composer https://packagist.phpcomposer.com

新建项目
composer create-project laravel/laravel gwd --prefer-dist

二、目录介绍

这里不再详述了,请见官方文档。

三、路由起步(参数,连接符,默认值)

所有应用路由都定义在 App\Providers\RouteServiceProvider 类载入的 app/Http/routes.php 文件中。
最基本的 Laravel 路由接收一个 URI 和一个闭包:

Route::get(\'/\', function () {
return \'Hello World\';
});

代表 http://localhost/ 返回 Hello World,下面这个是post方法。

Route::post(\'add\', function () {
//
});

也可以用以下方法:

Route::match([\'get\', \'post\'], \'/\', function () {
//
});

Route::any(\'foo\', function () {
//
});

结合控制器:

Route::get(\'/\', "IndexController@lst");

分组:

Route::group([\'prefix\' => \'admin\',\'namespace\'=>\'Admin\',\'middleware\'=>[\'web\',\'admin.login\']], function () {
//Route::get(\'login\',\'IndexController@login\');
Route::get(\'index\',\'IndexController@index\');
Route::resource(\'article\', \'ArticleController\');
});

参数:

Route::get(\'posts/{post}/comments/{comment}\', function ($postId, $commentId) {
return $commentId;
});

默认值:

Route::get(\'posts/{post}/comments/{comment?}\', function ($postId=0, $commentId=null) {
return $postId .\'----\'.$commentId;
});

资源路由:

Route::resource(\'article\', \'ArticleController\'); //生成n个方法

四、控制器

位于App\Http\Controllers

手动创建

<?php 
namespace App\Http\Controllers;
class IndexController extends Controller{

public function index(){
	return "welcome";

}

}

artisan 创建控制器:

php artisan make:controller UserController

控制器分组:有时候要把控制器进行分组,只需要在App\Http\Controllers下新文件夹,然后把控制器放进去。(需要改命名空间和use路径)

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

use App\Http\Requests;

class UserController extends Controller
{
public function index(){
return "你好";
}
//
}

五、视图

视图用的都是blade模板,位于view下面,有个示例文件welcome.blade.php。生产环境中只需要把模板拷到此处,重命名成blade.php。

控制器渲染模板

 public function index()
{
return view(\'index\');
}

如果模板上层还有文件夹,比如模板位于view/web/a.index.blade.php,view(\'web.index\');
用“.”来连接。

 public function index()
{
    return view(\'web.index\');
}
模板中只需要输出变量:<?php echo $data;?>

传参(单个):

 public function index()
{
    $data="你好";
    return view(\'web.index\')->with(\'data\',$data);
}

传参(多个):只需要放数组是,然后作为第二个参数传给视图

 public function index()
{
  $data1="你好1";
  $data2="你好2";
  $data3="你好3";
  $data=[
  \'data1\'=>$data1,
  \'data2\'=>$data2,
  \'data3\'=>$data3
];
  return view(\'web.index\', $data);
}

compact传值:

 public function index()
{
$data1="你好1";
$data2="你好2";
$data3="你好3";
$data=[
\'data1\'=>$data1,
\'data2\'=>$data2,
\'data3\'=>$data3
];
return view(\'web.index\', compact(\'data\',\'data1\'));
}

模板中调用:<?php echo $data[\'data1\'];?>

模板简单语法:

1、 单个变量{{$name}}

2、原样输出:

@{{$name}}

3、判断变量是否为空并作处理

{{$name or \'姓名为空\'}}

4、判断变量是否存在并作逻辑处理

{{isset($data1)?$data1:"不存在"}}

5、 转义 显示未转义的数据。在默认情况下,Blade 模板中的 {{ }} 表达式将会自动调用 PHP 的 htmlentities 函数,以避免 XSS 攻击。如果你不希望你的数据被转义,可以使用下列的语法:

{!!$str!!}

流程控制

@if($name>10)

大人
@else
小孩
@endif

除非--否则

@unless($name>10)
小孩
@endunless

for循环

@for($i=0;$i<10;$i++)
{{$i}}
@endfor

foreach

@foreach($data as $v)
{{$v}}
@empty
为空
@endforeach

while

@whiile(true)
你是真的
@endwhile

子模板

包含

@include(index)
@include(\'common.header\',[\'page\'=>\'首页\'])
被包含的
<div class="header">我是公共头部 - 您当前访问的页面是:{{$page}}</div>

嵌套

母版

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.header{height:100px;background: darkred}
.middle{height: 300px; background: lightblue}
.footer{height:100px;background: yellowgreen}
</style>
</head>
<body>
<div class="header">我是公共头部</div>
{{--@yield(\'content\')--}}

@section(\'content\')
<P>我是主模板里的内容</P>
@show

<div class="footer">我是公共底部</div></body>
</html>

子版

@extends(\'layouts.home\')

@section(\'content\')
@parent
<div class="middle">我是layouts区域的替换内容 XXXXXXXX</div>
@endsection

分类:

技术点:

相关文章: