Laravel入门

一、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的版本。如下图


3.项目目录结构介绍

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

Config   配置文件的目录

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

Public  入口文件及资源的目录

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

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

Vendor   composer加载的一些依赖文件

4.使用laravel。

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

 

 

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

   


二、laravel中的路由和MVC

1.路由简介

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

2.使用路由

(1)get请求

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

Route::get('basic1', function(){
return 'hello world';
});
  

 

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,如下图:


最后重启apache即可。

(2)post请求

Route::post('basic2', function(){
return 'Hello world';
});

(3)多请求路由

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

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

Route::match(['get','post'],'multy1',function(){
return 'hello world';
});

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

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

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

Route::any('multy2',function(){
return 'hello world';
});

(4)参数路由

即url里传参的路由

//参数路由

Route::get('User/{id}',function($id){
return 'User-'.$id;
});

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

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

Route::get('User/{id?}',function($id="hh"){
return 'User-'.$id;
});

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

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

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

Route::get('User/{name?}',function($name="hh"){
return 'User-name-'.$name;
})->where('name','[a-zA-Z]+');

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

//多个参数

Route::get('User/{id}/{name?}',function($id,$name="hh"){
return 'User-name-'.$name."-id-".$id;
})->where(["id"=>"[\d]+",'name'=>'[a-zA-Z]+']);

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

(5)路由别名

//路由别名

Route::get('user/member-center',["as"=>"center",function(){
return route('center');
}]);

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

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

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

Route::get('user/center',["as"=>"center",function(){
return route('center');
}]);

(6)路由群组

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

Route::group(['prefix'=>"member"],function(){
    Route::any('multy2',function(){
        return 'member-multy2';
    });
   Route::get('basic1', function(){
	return 'member-basic1';
    });
});

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

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

(7)路由中输出视图

Route::get('view', function(){
return view('welcome');
});

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

3.控制器

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

<?php
namespace App\Http\Controllers;
class MemberController extends Controller {
   public function info(){
   return "member-info";
   }
}

路由配置:Route::get('member/info','MemberController@info');

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

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

//起别名

Route::get('member/info',[
'uses'=>'MemberController@info',
'as'=>'member-center'
]);

//参数绑定

路由设置:Route::get('member/{id}','MemberController@info');

Route::get('member/{id}',['uses'=>'MemberController@info']);

控制器里写:

<?php 
namespace App\Http\Controllers;
class MemberController extends Controller {
	public function info($id){
	return "member-info-".$id;
	}
}

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

4.视图

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

<html>
<head>
<title>视图</title>
</head>
<body>
     会员中心
</body>
</html>

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

public function view(){
	return view('member');
}

最后配置路由

Route::get('member/view','MemberController@view');

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


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

 

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

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

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

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

public function view(){
	return view('member',['name'=>'zls','age'=>18]);
}

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


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

5.模型

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

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Member extends Model{
	public static function getMember(){
	return "member name is zls";
	}
}

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

public function model(){
	return Member::getMember();
}

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


路由里配置:Route::get('member/model','MemberController@model');

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



my github: https://github.com/lensh
  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值