发布网友 发布时间:2024-09-26 20:28
共1个回答
热心网友 时间:2024-10-04 10:05
laravel框架用request:file接不到文件怎么解决亲,上传文件请参考手册:
取得上传文件
$file=Request::file('photo');
确认文件是否有上传
if(Request::hasFile('photo'))
{
//
}
file方法返回的对象是Symfony\Component\HttpFoundation\File\UploadedFile的实例,UploadedFile继承了PHP的SplFileInfo类并且提供了很多和文件交互的方法。
确认上传的文件是否有效
if(Request::file('photo')-isValid())
{
//
}
移动上传的文件
Request::file('photo')-move($destinationPath);
Request::file('photo')-move($destinationPath,$fileName);
希望对你有帮助!~~
如何安装Laravel框架
通过Laravel安装器安装
1
先下载Laravel安装器PHAR文件。为了方便起见,将该文件重命名为laravel并移动至/usr/local/bin目录。完成后,只需在你指定的目录下输入简单的laravelnew命令即可创建一个全新的Laravel安装。例如,laravelnewblog将创建一个名为blog的目录,该目录中包含了一份全新的Laravel安装以及所需的依赖项。这种安装方法比通过Composer安装要快许多
通过Composercreate-project命令安装Lar
1
还可以通过在命令行执行Composercreate-project命令来安装Laravel:
composercreate-projectlaravel/laravel--prefer-dist
通过下载Laravel包安装
1
Composer安装完成后,下载最新版Laravel框架,把它解压缩到你服务器上的一个目录中。然后在Laravel应用的根目录下运行命令行命令phpcomposer.pharinstall(或者composerinstall)来安装所有的框架依赖包。在此过程中,为了成功完成安装,你需要在服务器上安装好Git。
当Laravel框架安装好后,你可以使用命令行命令phpcomposer.pharupdate来更新框架。
END
服务器环境要求
1
Laravel框架有一些系统要求:
PHP最低版本:5.3.7MCryptPHP扩展
从PHP5.5版本开始,针对某些操作系统的安装包需要你自己手工安装PHP的JSON扩展模块。如果你使用的是Ubuntu,可以通过,apt-getinstallphp5-json命令直接安装。
配置
Laravel框架几乎无需配置就可立即使用。你可以自由地快速开始开发。然而,你也许希望先查看下app/config/app.php配置文件和相关的文档说明。它包含了一些你也许要修改的配置选项,如时区和地区等。
权限设置
Laravel框架有一个目录需要额外设置权限:需要为app/storage目录下的文件设置写权限。
路径设置
一些框架目录路径是可以设置的。如果需要改变这些目录的位置,可以查看bootstrap/paths.php文件中的设置。
Laravel框架通过设置public/.htaccess文件去除链接中的index.php。如果你你的服务器使用的是Apache,请开启mod_rewrite模块。
laravel框架各文件作用是什么?之间什么关系?文件的文件夹
作用
/app/config/
配置应用程序的运行时规则、数据库、session等等。包含大量的用来更改框架的各个方面的配置文件。大部分的配置文件中返回的选项关联PHP数组。
/app/config/app.php
各种应用程序级设置,即时区、区域设置(语言环境)、调试模式和独特的加密密钥。
/app/config/auth.php
控制在应用程序中如何进行身份验证,即身份验证驱动程序。
/app/config/cache.php
如果应用程序利用缓存来加快响应时间,要在此配置该功能。
/app/config/compile.php
在此处可以指定一些额外类,去包含由‘artisanoptimize’命令声称的编译文件。这些应该是被包括在基本上每个请求到应用程序中的类。
/app/config/database.php
包含数据库的相关配置信息,即默认数据库引擎和连接信息。
/app/config/mail.php
为电子邮件发件引擎的配置文件,即SMTP服务器,From:标头
/app/config/session.php
控制Laravel怎样管理用户sessions,即sessiondriver,sessionlifetime。
/app/config/view.php
模板系统的杂项配置。
/app/controllers
包含用于提供基本的逻辑、数据模型交互以及加载应用程序的视图文件的控制器类。
/app/database/migrations/
包含一些PHP类,允许Laravel更新当前数据库的架构并同时保持所有版本的数据库的同步。迁移文件是使用Artisan工具生成的。
/app/database/seeds/
包含允许Artisan工具用关系数据来填充数据库表的PHP文件。
/app/lang/
PHP文件,其中包含使应用程序易于本地化的字符串的数组。默认情况下目录包含英语语言的分页和表单验证的语言行。
/app/models/
模型是代表应用程序的信息(数据)和操作数据的规则的一些类。在大多数情况下,数据库中的每个表将对应应用中的一个模型。应用程序业务逻辑的大部分将集中在模型中。
/app/start/
包含与Artisan工具以及全球和本地上下文相关的自定义设置。
/app/storage/
该目录存储Laravel各种服务的临时文件,如session,cache,compiledviewtemplates。这个目录在web服务器上必须是可以写入的。该目录由Laravel维护,我们可以不关心。
/app/tests/
该文件夹给你提供了一个方便的位置,用来做单元测试。如果你使用PHPUnit,你可以使用Artisan工具一次执行所有的测试。
/app/views/
该文件夹包含了控制器或者路由使用的HTML模版。请注意,这个文件夹下你只能放置模版文件。其他的静态资源文件如css,javascript和images文件应该放在/public文件夹下。
/app/routes.php
这是您的应用程序的路由文件,其中包含路由规则,告诉Laravel如何将传入的请求连接到路由处理的闭包函数、控制器和操作。该文件还包含几个事件声明,包括错误页的,可以用于定义视图的composers。
/app/filters.php
此文件包含各种应用程序和路由筛选方法,用来改变您的应用程序的结果。Laravel具有访问控制和XSS保护的一些预定义筛选器。
花了很多心思在建立和命名文件夹上,得到的就是一个具有良好的文件系统的应用程序。
在这里你得到了什么:MVC
什么是Laravel?它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中。你可以选择下载一个扩展包(bundle)然后拷贝到bundles目录,或者通过命令行工具“Artisan”自动安装。2、在Laravel中已经具有了一套高级的PHPActiveRecord实现--EloquentORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。3、应用逻辑(ApplicationLogic)可以在控制器(controllers)中实现,也可以直接集成到路由(route)声明中,并且语法和Sinatra框架类似。Laravel的设计理念是:给开发者以最大的灵活性,既能创建非常小的网站也能构建大型的企业应用。4、反向路由(ReverseRouting)赋予你通过路由(routes)名称创建链接(URI)的能力。只需使用路由名称(routename),Laravel就会自动帮你创建正确的URI。这样你就可以随时改变你的路由(routes),Laravel会帮你自动更新所有相关的链接。5、Restful控制器(RestfulControllers)是一项区分GET和POST请求逻辑的可选方式。比如在一个用户登陆逻辑中,你声明了一个get_login()的动作(action)来处理获取登陆页面的服务;同时也声明了一个post_login()动作(action)来校验表单POST过来的数据,并且在验证之后,做出重新转向(redirect)到登陆页面还是转向控制台的决定。6、自动加载类(ClassAuto-loading)简化了类(class)的加载工作,以后就可以不用去维护自动加载配置表和非必须的组件加载工作了。当你想加载任何库(library)或模型(model)时,立即使用就行了,Laravel会自动帮你加载需要的文件。7、视图组装器(ViewComposers)本质上就是一段代码,这段代码在视图(View)加载时会自动执行。最好的例子就是博客中的侧边随机文章推荐,“视图组装器”中包含了加载随机文章推荐的逻辑,这样,你只需要加载内容区域的视图(view)就行了,其它的事情Laravel会帮你自动完成。8、反向控制容器(IoCcontainer)提供了生成新对象、随时实例化对象、访问单例(singleton)对象的便捷方式。反向控制(IoC)意味着你几乎不需要特意去加载外部的库(libraries),就可以在代码中的任意位置访问这些对象,并且不需要忍受繁杂、冗余的代码结构。9、迁移(Migrations)就像是版本控制(versioncontrol)工具,不过,它管理的是数据库范式,并且直接集成在了Laravel中。你可以使用“Artisan”命令行工具生成、执行“迁移”指令。当你的小组成员改变了数据库范式的时候,你就可以轻松的通过版本控制工具更新当前工程,然后执行“迁移指令即可,好了,你的数据库已经是最新的了!11、自动分页(AutomaticPagination)功能避免了在你的业务逻辑中混入大量无关分页配置代码。方便的是不需要记住当前页,只要从数据库中获取总的条目数量,然后使用limit/offset获取选定的数据,最后调用‘paginate’方法,让Laravel将各页链接输出到指定的视图(View)中即可,Laravel会替你自动完成所有工作。Laravel的自动分页系统被设计为容易实现、易于修改。
如何使用laravel搭建后台登录系统首先确认,后台的用户表,设计表叫做badmin,每个管理员有用户名(username),有昵称(nickname),有邮箱(email),有密码(password)
这里玩个花,使用laravel的migration来建立表(实际上可以用不着使用这个工具建立表)
1安装好最基本的laravel框架
2创建migration文件:
./artisanmigrate:makecreate-badmin-table
3发现app/database/migration/下面多了一个php文件:
2014_10_19_090336_create-badmin-table.php
4往up和down里面增加内容;
?php
useIlluminate\Database\Schema\Blueprint;
useIlluminate\Database\Migrations\Migration;
classCreateBadminTableextendsMigration{
/**
*Runthemigrations.
*
*@returnvoid
*/
publicfunctionup()
{
Schema::create('badmin',function($table)
{
$table-increments('id');
$table-string('nickname',100)-unique();
$table-string('username',100)-unique();
$table-string('email',100)-unique();
$table-string('password',64);
$table-timestamps();
});
}
/**
*Reversethemigrations.
*
*@returnvoid
*/
publicfunctiondown()
{
Schema::drop('badmin');
}
}
5配置好local的database,app/config/local/database.php
?php
returnarray(
'fetch'=PDO::FETCH_CLASS,
'default'='mysql',
'connections'=array(
'mysql'=array(
'driver'='mysql',
'host'='localhost',
'database'=’test',
'username'='yejianfeng',
'password'='123456',
'charset'='utf8',
'collation'='utf8_unicode_ci',
'prefix'='',
),
),
'migrations'='migrations',
);
6创建数据表:
./artisanmigrate--env=local
这个时候去数据库看,就发现多了一张badmin表,数据结构如下:
CREATETABLE`badmin`(
`id`int(10)unsignedNOTNULLAUTO_INCREMENT,
`nickname`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`username`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`email`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`password`varchar(64)COLLATEutf8_unicode_ciNOTNULL,
`created_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00',
`updated_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00',
PRIMARYKEY(`id`),
UNIQUEKEY`badmin_nickname_unique`(`nickname`),
UNIQUEKEY`badmin_username_unique`(`username`),
UNIQUEKEY`badmin_email_unique`(`email`)
)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;
要问这里为什么多出了create_at和update_at,这是laravel默认为每个表创建的字段,而且在使用Eloquent进行增删改查的时候能自动更新这两个字段
7创建个Model:
?php
useIlluminate\Auth\UserTrait;
useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableTrait;
useIlluminate\Auth\Reminders\RemindableInterface;
classBadminextendsEloquentimplementsUserInterface,RemindableInterface{
useUserTrait,RemindableTrait;
protected$table='badmin';
protected$hidden=array('password');
publicstatic$rules=[
'nickname'='required|alpha_num|min:2',
'username'='required',
'email'='required|email|unique:badmin',
'password'='required|alpha_num|between:6,12|confirmed',
];
}
这里必须要implementsUserInterface和RemindableInterface
8把model和Auth关联上,修改app/config/auth.php
?php
returnarray(
//默认的用户验证驱动
//可以是database或者eloquent
'driver'='eloquent',
//只有驱动为eloquent的时候才有用
'model'='Badmin',
);
这里的driver可以是eloquent或者database,使用eloquent就告诉Auth组件说,用户认证类是Badmin这个类管的。这里的model是有命名空间的,就是说如果你的admin类是\Yejianfeng\Badmin,这里就应该改成’\Yejianfeng\Badmin’
9好了,这个时间其实逻辑部分已经搭建完毕了,你已经可以在controller种使用
Auth::attempt(XXX)做权限认证
Auth::user()获取登录用户(一个Badmin类)
等。
10下面要建立一个用户登录页面:
11设置路由:
?php
//不需要登录验证的接口
Route::get('/',['as'='user.login','uses'='UserController@getLogin']);
Route::get('user/login',['as'='login','uses'='UserController@getLogin']);
Route::post('user/login',['as'='login','uses'='UserController@postLogin']);
//需要登录验证才能操作的接口
Route::group(array('before'='auth'),function()
{
Route::get('user/logout',['as'='logout','uses'='UserController@getLogout']);
Route::get('user/dashboard',['as'='dashboard','uses'='UserController@getDashboard']);
});
12设置controller:
?php
classUserControllerextendsBaseController{
//登录页面
publicfunctiongetLogin()
{
returnView::make('user.login');
}
//登录操作
publicfunctionpostLogin()
{
if(Auth::attempt(array('email'=Input::get('email'),'password'=Input::get('password')))){
returnRedirect::to('user/dashboard')
-with('message','成功登录');
}else{
returnRedirect::to('user/login')
-with('message','用户名密码不正确')
-withInput();
}
}
//登出
publicfunctiongetLogout()
{
Auth::logout();
returnRedirect::to('user/login');
}
publ
热心网友 时间:2024-10-04 10:10
laravel框架用request:file接不到文件怎么解决亲,上传文件请参考手册:
取得上传文件
$file=Request::file('photo');
确认文件是否有上传
if(Request::hasFile('photo'))
{
//
}
file方法返回的对象是Symfony\Component\HttpFoundation\File\UploadedFile的实例,UploadedFile继承了PHP的SplFileInfo类并且提供了很多和文件交互的方法。
确认上传的文件是否有效
if(Request::file('photo')-isValid())
{
//
}
移动上传的文件
Request::file('photo')-move($destinationPath);
Request::file('photo')-move($destinationPath,$fileName);
希望对你有帮助!~~
如何安装Laravel框架
通过Laravel安装器安装
1
先下载Laravel安装器PHAR文件。为了方便起见,将该文件重命名为laravel并移动至/usr/local/bin目录。完成后,只需在你指定的目录下输入简单的laravelnew命令即可创建一个全新的Laravel安装。例如,laravelnewblog将创建一个名为blog的目录,该目录中包含了一份全新的Laravel安装以及所需的依赖项。这种安装方法比通过Composer安装要快许多
通过Composercreate-project命令安装Lar
1
还可以通过在命令行执行Composercreate-project命令来安装Laravel:
composercreate-projectlaravel/laravel--prefer-dist
通过下载Laravel包安装
1
Composer安装完成后,下载最新版Laravel框架,把它解压缩到你服务器上的一个目录中。然后在Laravel应用的根目录下运行命令行命令phpcomposer.pharinstall(或者composerinstall)来安装所有的框架依赖包。在此过程中,为了成功完成安装,你需要在服务器上安装好Git。
当Laravel框架安装好后,你可以使用命令行命令phpcomposer.pharupdate来更新框架。
END
服务器环境要求
1
Laravel框架有一些系统要求:
PHP最低版本:5.3.7MCryptPHP扩展
从PHP5.5版本开始,针对某些操作系统的安装包需要你自己手工安装PHP的JSON扩展模块。如果你使用的是Ubuntu,可以通过,apt-getinstallphp5-json命令直接安装。
配置
Laravel框架几乎无需配置就可立即使用。你可以自由地快速开始开发。然而,你也许希望先查看下app/config/app.php配置文件和相关的文档说明。它包含了一些你也许要修改的配置选项,如时区和地区等。
权限设置
Laravel框架有一个目录需要额外设置权限:需要为app/storage目录下的文件设置写权限。
路径设置
一些框架目录路径是可以设置的。如果需要改变这些目录的位置,可以查看bootstrap/paths.php文件中的设置。
Laravel框架通过设置public/.htaccess文件去除链接中的index.php。如果你你的服务器使用的是Apache,请开启mod_rewrite模块。
laravel框架各文件作用是什么?之间什么关系?文件的文件夹
作用
/app/config/
配置应用程序的运行时规则、数据库、session等等。包含大量的用来更改框架的各个方面的配置文件。大部分的配置文件中返回的选项关联PHP数组。
/app/config/app.php
各种应用程序级设置,即时区、区域设置(语言环境)、调试模式和独特的加密密钥。
/app/config/auth.php
控制在应用程序中如何进行身份验证,即身份验证驱动程序。
/app/config/cache.php
如果应用程序利用缓存来加快响应时间,要在此配置该功能。
/app/config/compile.php
在此处可以指定一些额外类,去包含由‘artisanoptimize’命令声称的编译文件。这些应该是被包括在基本上每个请求到应用程序中的类。
/app/config/database.php
包含数据库的相关配置信息,即默认数据库引擎和连接信息。
/app/config/mail.php
为电子邮件发件引擎的配置文件,即SMTP服务器,From:标头
/app/config/session.php
控制Laravel怎样管理用户sessions,即sessiondriver,sessionlifetime。
/app/config/view.php
模板系统的杂项配置。
/app/controllers
包含用于提供基本的逻辑、数据模型交互以及加载应用程序的视图文件的控制器类。
/app/database/migrations/
包含一些PHP类,允许Laravel更新当前数据库的架构并同时保持所有版本的数据库的同步。迁移文件是使用Artisan工具生成的。
/app/database/seeds/
包含允许Artisan工具用关系数据来填充数据库表的PHP文件。
/app/lang/
PHP文件,其中包含使应用程序易于本地化的字符串的数组。默认情况下目录包含英语语言的分页和表单验证的语言行。
/app/models/
模型是代表应用程序的信息(数据)和操作数据的规则的一些类。在大多数情况下,数据库中的每个表将对应应用中的一个模型。应用程序业务逻辑的大部分将集中在模型中。
/app/start/
包含与Artisan工具以及全球和本地上下文相关的自定义设置。
/app/storage/
该目录存储Laravel各种服务的临时文件,如session,cache,compiledviewtemplates。这个目录在web服务器上必须是可以写入的。该目录由Laravel维护,我们可以不关心。
/app/tests/
该文件夹给你提供了一个方便的位置,用来做单元测试。如果你使用PHPUnit,你可以使用Artisan工具一次执行所有的测试。
/app/views/
该文件夹包含了控制器或者路由使用的HTML模版。请注意,这个文件夹下你只能放置模版文件。其他的静态资源文件如css,javascript和images文件应该放在/public文件夹下。
/app/routes.php
这是您的应用程序的路由文件,其中包含路由规则,告诉Laravel如何将传入的请求连接到路由处理的闭包函数、控制器和操作。该文件还包含几个事件声明,包括错误页的,可以用于定义视图的composers。
/app/filters.php
此文件包含各种应用程序和路由筛选方法,用来改变您的应用程序的结果。Laravel具有访问控制和XSS保护的一些预定义筛选器。
花了很多心思在建立和命名文件夹上,得到的就是一个具有良好的文件系统的应用程序。
在这里你得到了什么:MVC
什么是Laravel?它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中。你可以选择下载一个扩展包(bundle)然后拷贝到bundles目录,或者通过命令行工具“Artisan”自动安装。2、在Laravel中已经具有了一套高级的PHPActiveRecord实现--EloquentORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。3、应用逻辑(ApplicationLogic)可以在控制器(controllers)中实现,也可以直接集成到路由(route)声明中,并且语法和Sinatra框架类似。Laravel的设计理念是:给开发者以最大的灵活性,既能创建非常小的网站也能构建大型的企业应用。4、反向路由(ReverseRouting)赋予你通过路由(routes)名称创建链接(URI)的能力。只需使用路由名称(routename),Laravel就会自动帮你创建正确的URI。这样你就可以随时改变你的路由(routes),Laravel会帮你自动更新所有相关的链接。5、Restful控制器(RestfulControllers)是一项区分GET和POST请求逻辑的可选方式。比如在一个用户登陆逻辑中,你声明了一个get_login()的动作(action)来处理获取登陆页面的服务;同时也声明了一个post_login()动作(action)来校验表单POST过来的数据,并且在验证之后,做出重新转向(redirect)到登陆页面还是转向控制台的决定。6、自动加载类(ClassAuto-loading)简化了类(class)的加载工作,以后就可以不用去维护自动加载配置表和非必须的组件加载工作了。当你想加载任何库(library)或模型(model)时,立即使用就行了,Laravel会自动帮你加载需要的文件。7、视图组装器(ViewComposers)本质上就是一段代码,这段代码在视图(View)加载时会自动执行。最好的例子就是博客中的侧边随机文章推荐,“视图组装器”中包含了加载随机文章推荐的逻辑,这样,你只需要加载内容区域的视图(view)就行了,其它的事情Laravel会帮你自动完成。8、反向控制容器(IoCcontainer)提供了生成新对象、随时实例化对象、访问单例(singleton)对象的便捷方式。反向控制(IoC)意味着你几乎不需要特意去加载外部的库(libraries),就可以在代码中的任意位置访问这些对象,并且不需要忍受繁杂、冗余的代码结构。9、迁移(Migrations)就像是版本控制(versioncontrol)工具,不过,它管理的是数据库范式,并且直接集成在了Laravel中。你可以使用“Artisan”命令行工具生成、执行“迁移”指令。当你的小组成员改变了数据库范式的时候,你就可以轻松的通过版本控制工具更新当前工程,然后执行“迁移指令即可,好了,你的数据库已经是最新的了!11、自动分页(AutomaticPagination)功能避免了在你的业务逻辑中混入大量无关分页配置代码。方便的是不需要记住当前页,只要从数据库中获取总的条目数量,然后使用limit/offset获取选定的数据,最后调用‘paginate’方法,让Laravel将各页链接输出到指定的视图(View)中即可,Laravel会替你自动完成所有工作。Laravel的自动分页系统被设计为容易实现、易于修改。
如何使用laravel搭建后台登录系统首先确认,后台的用户表,设计表叫做badmin,每个管理员有用户名(username),有昵称(nickname),有邮箱(email),有密码(password)
这里玩个花,使用laravel的migration来建立表(实际上可以用不着使用这个工具建立表)
1安装好最基本的laravel框架
2创建migration文件:
./artisanmigrate:makecreate-badmin-table
3发现app/database/migration/下面多了一个php文件:
2014_10_19_090336_create-badmin-table.php
4往up和down里面增加内容;
?php
useIlluminate\Database\Schema\Blueprint;
useIlluminate\Database\Migrations\Migration;
classCreateBadminTableextendsMigration{
/**
*Runthemigrations.
*
*@returnvoid
*/
publicfunctionup()
{
Schema::create('badmin',function($table)
{
$table-increments('id');
$table-string('nickname',100)-unique();
$table-string('username',100)-unique();
$table-string('email',100)-unique();
$table-string('password',64);
$table-timestamps();
});
}
/**
*Reversethemigrations.
*
*@returnvoid
*/
publicfunctiondown()
{
Schema::drop('badmin');
}
}
5配置好local的database,app/config/local/database.php
?php
returnarray(
'fetch'=PDO::FETCH_CLASS,
'default'='mysql',
'connections'=array(
'mysql'=array(
'driver'='mysql',
'host'='localhost',
'database'=’test',
'username'='yejianfeng',
'password'='123456',
'charset'='utf8',
'collation'='utf8_unicode_ci',
'prefix'='',
),
),
'migrations'='migrations',
);
6创建数据表:
./artisanmigrate--env=local
这个时候去数据库看,就发现多了一张badmin表,数据结构如下:
CREATETABLE`badmin`(
`id`int(10)unsignedNOTNULLAUTO_INCREMENT,
`nickname`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`username`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`email`varchar(100)COLLATEutf8_unicode_ciNOTNULL,
`password`varchar(64)COLLATEutf8_unicode_ciNOTNULL,
`created_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00',
`updated_at`timestampNOTNULLDEFAULT'0000-00-0000:00:00',
PRIMARYKEY(`id`),
UNIQUEKEY`badmin_nickname_unique`(`nickname`),
UNIQUEKEY`badmin_username_unique`(`username`),
UNIQUEKEY`badmin_email_unique`(`email`)
)ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8COLLATE=utf8_unicode_ci;
要问这里为什么多出了create_at和update_at,这是laravel默认为每个表创建的字段,而且在使用Eloquent进行增删改查的时候能自动更新这两个字段
7创建个Model:
?php
useIlluminate\Auth\UserTrait;
useIlluminate\Auth\UserInterface;
useIlluminate\Auth\Reminders\RemindableTrait;
useIlluminate\Auth\Reminders\RemindableInterface;
classBadminextendsEloquentimplementsUserInterface,RemindableInterface{
useUserTrait,RemindableTrait;
protected$table='badmin';
protected$hidden=array('password');
publicstatic$rules=[
'nickname'='required|alpha_num|min:2',
'username'='required',
'email'='required|email|unique:badmin',
'password'='required|alpha_num|between:6,12|confirmed',
];
}
这里必须要implementsUserInterface和RemindableInterface
8把model和Auth关联上,修改app/config/auth.php
?php
returnarray(
//默认的用户验证驱动
//可以是database或者eloquent
'driver'='eloquent',
//只有驱动为eloquent的时候才有用
'model'='Badmin',
);
这里的driver可以是eloquent或者database,使用eloquent就告诉Auth组件说,用户认证类是Badmin这个类管的。这里的model是有命名空间的,就是说如果你的admin类是\Yejianfeng\Badmin,这里就应该改成’\Yejianfeng\Badmin’
9好了,这个时间其实逻辑部分已经搭建完毕了,你已经可以在controller种使用
Auth::attempt(XXX)做权限认证
Auth::user()获取登录用户(一个Badmin类)
等。
10下面要建立一个用户登录页面:
11设置路由:
?php
//不需要登录验证的接口
Route::get('/',['as'='user.login','uses'='UserController@getLogin']);
Route::get('user/login',['as'='login','uses'='UserController@getLogin']);
Route::post('user/login',['as'='login','uses'='UserController@postLogin']);
//需要登录验证才能操作的接口
Route::group(array('before'='auth'),function()
{
Route::get('user/logout',['as'='logout','uses'='UserController@getLogout']);
Route::get('user/dashboard',['as'='dashboard','uses'='UserController@getDashboard']);
});
12设置controller:
?php
classUserControllerextendsBaseController{
//登录页面
publicfunctiongetLogin()
{
returnView::make('user.login');
}
//登录操作
publicfunctionpostLogin()
{
if(Auth::attempt(array('email'=Input::get('email'),'password'=Input::get('password')))){
returnRedirect::to('user/dashboard')
-with('message','成功登录');
}else{
returnRedirect::to('user/login')
-with('message','用户名密码不正确')
-withInput();
}
}
//登出
publicfunctiongetLogout()
{
Auth::logout();
returnRedirect::to('user/login');
}
publ