一 表单
1 传统表单提交
控制器验证
public function add(Request $request){
if($request->isMethod()=='post'){
$this->validate($request, [
'title' => 'required|max:50',
]);
}
}
前端显示错误
@if (count($errors) > 0)
@foreach ($errors->all() as $error)
- {{ $error }}
@endforeach
@endif
2 ajax
控制器验证
public function add(Request $request){
if($request->ajax()){
// 验证数据 自定义自定义验证
$title = $request->input('title');
if(mb_strlen($title)>50){
return response()->json(array('code'=>-1,'msg'=>'标题不得大于50位'));
}
if(empty($title)){
return response()->json(array('code'=>-1,'msg'=>'请填写标题'));
}
// 实现逻辑
$id = Db::table('article')->insert(['title'=>$title,'content'=>$content,'date'=>$date,'uid'=>$uid]);
// 渲染返回
if($id){
return response()->json(array('code'=>1,'msg'=>'发表成功'));
}else{
return response()->json(array('code'=>-1,'msg'=>'发表失败'));
}
}
}
PS:如果js文件分离了出去,url如何填写
可以先在模板文件的javascript部分定义一个数组,存储地址
再使用数组填写地址
function logout(){
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
type: 'POST',
url: laravel['logout'],
data: {},
dataType: 'json',
async : 'false', //同步
success: function(res){
if(res.code==-1){
layer.alert(res.msg,{icon:2});
}else if(res.code==1){
// 成功
}
},
});
}
二 验证码 ( laravel 5.2 验证码)
1 找到项目中的composer.json,在里面加上下面一句
"require": {
...
"gregwar/captcha": "1.*"
},
2 cmd 进入项目根目录 输入以下命令(前提是装了 composer)
composer update -vvv // 后面的-vvv能看到执行的详情 因为时间较长,可以看到安装过程
3 在控制器中,先引用,再调用,执行该方法时
namespace App\Http\Controllers;
use Gregwar\Captcha\CaptchaBuilder;
use Session;
class AccountController extends Controller{
public function captcha($tmp){
$builder = new CaptchaBuilder; //生成验证码图片的Builder对象,配置相应属性
$builder->build($width = 100, $height = 40, $font = null); //可以设置图片宽高及字体
$phrase = $builder->getPhrase(); //获取验证码的内容
Session::flash('milkcaptcha', $phrase); //把内容存入session
header("Cache-Control: no-cache, must-revalidate"); //生成图片
header('Content-Type: image/jpeg');
$builder->output();
}
}
4 添加路由
Route::get('index/captcha/{tmp}','AccountController@captcha'); // 验证码
5 模板中调用
三 上传文件
public function up(Request $request){
if ($request->hasFile('file')) {
$images = $request->file('file'); // 1,获取一下文件
$filedir = "upload"; // 2、定义文件上传路径 默认public下
$imagesName = $images->getClientOriginalName(); // 3、获取上传文件的文件名
$extension = $images -> getClientOriginalExtension(); // 4、获取上传文件的后缀名
$newImagesName = md5(time()).random_int(5,5).".".$extension; // 5、重新命名上传文件名字
$info = $images->move($filedir,$newImagesName); //6、使用move方法移动文件
if($info){
//把自己需要的数据返回
return response()->json(array(
'code'=>1,'msg'=>'图片上传成功','data'=>array('src'=>$filedir.'/'.$newImagesName)));
}else{
exit(json_encode(array('code'=>-1,'msg'=>'图片上传失败')));
}
}
}
第二种方式
设置配置文件 config/filesystems.php
'disks' => [
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'visibility' => 'public',
],
// 添加自己要使用的地址
'upload' => [
'driver' => 'local','
'root' => storage_path('app/uploads'), // 对应地址是 storage/app/uploads
]
],
控制器
public function up(Request $request){
if($request->isValid){
$images = $request->file('file'); // 1,获取一下文件
$imagesName = $images->getClientOriginalName(); // 2、获取上传图片的文件名
$extension = $images -> getClientOriginalExtension(); // 3、获取上传图片的后缀名
$realPath = $images ->getRealPath(); // 4 获取临时地址
$bool = Storage::disk('uploads')->put($filename,file_get_contents($realPath)); // 5 移动文件 uploads是之前配置文件里的
// use Illuminate\Support\Facades\Storage;
if($bool){
//把自己需要的数据返回
return response()->json(array(
'code'=>1,'msg'=>'图片上传成功','data'=>array('src'=>$filedir.'/'.$newImagesName)));
}else{
exit(json_encode(array('code'=>-1,'msg'=>'图片上传失败')));
}
}
}
四 缓存
配置文件 config\cache.php
env('CACHE_DRIVER', 'file'),
'stores' => [
'apc' => [
'driver' => 'apc',
],
'array' => [
'driver' => 'array',
],
'database' => [
'driver' => 'database',
'table' => 'cache',
'connection' => null,
],
'file' => [
'driver' => 'file',
'path' => storage_path('framework/cache'),
],
'memcached' => [
'driver' => 'memcached',
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
],
'redis' => [
'driver' => 'redis',
'connection' => 'default',
],
],
'prefix' => 'laravel',
];
默认缓存以文件形式存放在storage/framework/cache目录下
where('id',$id)->first();
Cache::put('article'.$id,$article,10);
}else{
$article = Cache::get('article'.$id);
}
}
}
设置缓存
Cache::put('key','value', $minutes);
Cache::add('key','value', $minutes);
Cache::forever('key','value'); // 永久生效
获取缓存
Cache::get('key');
Cache::pull('key'); // 获取后删除
删除
Cache::forget('key');
Cache::flush(); // 删除所有缓存