一、laravel简介及安装

1.简介:Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。而且它是目前全世界最流行的php框架,没有之一。

2.下载及安装

去laravel中文官网下载,点击打开链接版本的选择,Laravel框架比较激进,大量使用了php的新特性,所以对php的版本要求比较高。

Laravel框架各个版本对php的要求:

5.1  5.2   php 5.5.9+

4.2    php 5.4+

4.1    php5.3.7+

我们可以先使用phpinfo函数来查看当前php的版本,然后再选择laravel的版本。如下图

Laravel入门

3.项目目录结构介绍

app   项目目录    app下的Http里有个controllers,是控制器。

Config   配置文件的目录

Database   数据库的文件及数据库迁移的目录

Public  入口文件及资源的目录

Resources   css文件及存有视图的目录,下面的views是视图目录

Storage   编译后的模板文件及缓存文件、日志

Vendor   composer加载的一些依赖文件

4.使用laravel。

url访问laravel/public/index.php,如果能看到下面的图样,则说明安装成功。这是laravel 5的欢迎界面

 Laravel入门

 

下面我们想把这个换成helloworld。怎么做呢?只需要按照下图,打开welcome.blade.php,将Laravel 5改成helloworld即可。

   Laravel入门


二、laravel中的路由和MVC

1.路由简介

  路由,简单的说,就是将用户的请求转发给相应的程序进行处理,作用是建立url与程序之间的映射。laravel里路由的请求类型有get、post、put、delete、patch。

2.使用路由

(1)get请求

 打开app->Http->routes.php,在里面写上

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('basic1'function(){  
  2. return 'hello world';  
  3. });  
  Laravel入门

 

URL访问laravel/public/basic1则会输出hello world。

如果报下面这个错误提示:
Sorry, the page you are looking for could not be found. NotFoundHttpException in RouteCollection.php line 161: 


则需要在路由名字前加index.php 例如laravel/public/index.php/basic1访问 ,原因是没有配置 .htaccess具体配置如下:

httpd.conf配置文件中加载了mod_rewrite.so模块,打开该配置文件,CTRL+F找到AllowOverride NoneNone 改为All,如下图:

Laravel入门
最后重启apache即可。

(2)post请求

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::post('basic2'function(){  
  2. return 'Hello world';  
  3. });  

(3)多请求路由

可以接收get请求,也可以接收post请求.

方式一:  用match()指定是哪几种请求,这种方式得先申明get或post请求

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::match(['get','post'],'multy1',function(){  
  2. return 'hello world';  
  3. });  

URL访问laravel/public/index.php/multy1,输出“hello world”。

解读:第一个参数['get','post']表示get和post都可以,第二个参数是路由的名字。

方式二:用any()表示接收任何请求

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::any('multy2',function(){  
  2. return 'hello world';  
  3. });  

(4)参数路由

即url里传参的路由

//参数路由

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('User/{id}',function($id){  
  2. return 'User-'.$id;  
  3. });  

URL访问laravel/public/index.php/User/4,输出:User-4

//当需要指定一个路由参数为可选时,可以在参数后面加上 ? 来实现,但是相应的变量必须有默认值:

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('User/{id?}',function($id="hh"){  
  2. return 'User-'.$id;  
  3. });  

URL访问laravel/public/index.php/User,输出:User-hh

URL访问laravel/public/index.php/User/mm,输出:User-mm

//也可以接上正则,在后面加where

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('User/{name?}',function($name="hh"){  
  2. return 'User-name-'.$name;  
  3. })->where('name','[a-zA-Z]+');  

URL访问laravel/public/index.php/User/6,发现会报错,因为上面的正则规定只能写字母。

//多个参数

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('User/{id}/{name?}',function($id,$name="hh"){  
  2. return 'User-name-'.$name."-id-".$id;  
  3. })->where(["id"=>"[\d]+",'name'=>'[a-zA-Z]+']);  

URL访问laravel/public/index.php/User/6/zls,输出User-name-zls-id-6

(5)路由别名

//路由别名

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('user/member-center',["as"=>"center",function(){  
  2. return route('center');  
  3. }]);  

URL访问laravel/public/index.php/user/member-center,会输出完整的路由。

别名的优点是:如果我们使用了别名,那么使用route()函数时,会自动返回当前的url,以供給其它地方,比如视图里使用。

当我们改成下面这样的样子时,也会输出完整的路由。

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('user/center',["as"=>"center",function(){  
  2. return route('center');  
  3. }]);  

(6)路由群组

项目里常常会有会员中心,这些界面一般都会有member这个前缀,那么设置群组路由,就可以省略很多代码。

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::group(['prefix'=>"member"],function(){  
  2.     Route::any('multy2',function(){  
  3.         return 'member-multy2';  
  4.     });  
  5.    Route::get('basic1'function(){  
  6.     return 'member-basic1';  
  7.     });  
  8. });  

URL访问laravel/public/index.php/member/multy2,输出member/multy2

URL访问laravel/public/index.php/member/basic1,输出member/basic1

(7)路由中输出视图

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('view'function(){  
  2. return view('welcome');  
  3. });  

URL访问laravel/public/index.php/view,这样就可以输出Laravel 5

3.控制器

App\Http\Controllers下新建一个MemberController.php.

[php] view plain copy
 Laravel入门Laravel入门
  1. <?php  
  2. namespace App\Http\Controllers;  
  3. class MemberController extends Controller {  
  4.    public function info(){  
  5.    return "member-info";  
  6.    }  
  7. }  

路由配置:Route::get('member/info','[email protected]');

或者Route::get('member/info',['uses'=>'[email protected]']);

URL访问laravel/public/index.php/member/info,输出member-info。

//起别名

[php] view plain copy
 Laravel入门Laravel入门
  1. Route::get('member/info',[  
  2. 'uses'=>'[email protected]',  
  3. 'as'=>'member-center'  
  4. ]);  

//参数绑定

路由设置:Route::get('member/{id}','[email protected]');

Route::get('member/{id}',['uses'=>'[email protected]']);

控制器里写:

[php] view plain copy
 Laravel入门Laravel入门
  1. <?php   
  2. namespace App\Http\Controllers;  
  3. class MemberController extends Controller {  
  4.     public function info($id){  
  5.     return "member-info-".$id;  
  6.     }  
  7. }  

结论,相比于不用控制器,控制器使用参数就是把参数写在了控制器里,路由要指向这个控制器的某个方法。

4.视图

resources-views下新建一个视图member.blade.php

[php] view plain copy
 Laravel入门Laravel入门
  1. <html>  
  2. <head>  
  3. <title>视图</title>  
  4. </head>  
  5. <body>  
  6.      会员中心  
  7. </body>  
  8. </html>  

然后在控制器MemberController.php里写增加一个方法

[php] view plain copy
 Laravel入门Laravel入门
  1. public function view(){  
  2.     return view('member');  
  3. }  

最后配置路由

Route::get('member/view','[email protected]');

URL访问laravel/public/index.php/member/view,输出会员中心。


一般一个控制器对应一个模板目录,因此需要在resources下新建一个member目录,把member.blade.php放在该目录下,然后控制器里return view(member/member),即return  view(目录名称/模板名称)。

 

//控制器也可以向模板传递变量

 控制器里:view(目录名称/模板名称,变量数组)。

模板里使用{{变量}}来访问变量

例如:在MemberController.php控制器里写:

[php] view plain copy
 Laravel入门Laravel入门
  1. public function view(){  
  2.     return view('member',['name'=>'zls','age'=>18]);  
  3. }  

模板里写  姓名:{{$name}}   年龄:{{$age}}

Laravel入门

URL访问laravel/public/index.php/member/view,输出会员中心姓名:zls 年龄:18

5.模型

app目录下新建一个模型Member.php

[php] view plain copy
 Laravel入门Laravel入门
  1. <?php  
  2. namespace App;  
  3. use Illuminate\Database\Eloquent\Model;  
  4. class Member extends Model{  
  5.     public static function getMember(){  
  6.     return "member name is zls";  
  7.     }  
  8. }  

MemberController.php控制器里增加一个方法:

[php] view plain copy
 Laravel入门Laravel入门
  1. public function model(){  
  2.     return Member::getMember();  
  3. }  

并且导入命名空间use App\Member;

Laravel入门

路由里配置:Route::get('member/model','[email protected]');

URL访问laravel/public/index.php/member/model,输出member name is zls。



my github:https://github.com/lensh

相关文章: