laravel 根据不同组织加载不同视图的实现
一,controller层定义helper.php文件
定义全局常量
publicfunction__construct()
{
$this->middleware(function($request,$next){
$this->_user=Auth::user();
//全局的数据处理,所有视图共用
$this->_beforeActionInit();
if($this->_user){
define('ORG_ID',$this->_user->organization_id);
$this->_currentOrganization=Organization::find(ORG_ID);
}else{
define('ORG_ID',0);
}
View::share('user',$this->_user);
View::share('currentOrganization',$this->_currentOrganization);
return$next($request);
});
}
/***获取对应视图*/if(!function_exists('get_organization_view')){/***@param$flag*@return\Illuminate\Config\Repository|mixed*/functionget_organization_view($flag,$org_id=1){$view=config("view.$flag.".$org_id);if(empty($view)){thrownewRuntimeException('OrgnizationError');}return$view;}}
//二,config下定义view.php
return[
'register'=>[
1=>'register.1',
2=>'register.2'
]
]
//三,sercive层定义UserService.php
publicfunctiongetValidateRule($org_id)
{
$rule=[//验证必填项,确认密码和密码要相同
'userName'=>'required|alpha_num|size:6|regex:/^[a-zA-Z]{3}[0-9]{2}[a-zA-Z]{1}$/',
'password'=>'required|min:6',
'confirmPassword'=>'required|same:password',
];
return$rule;
}
四,view下定义视图
register文件夹下有
1.blade.php,
2.blade.php
//五,controller下引用
/**
*注册
*/
publicfunctionregister(Request$request)
{
//提交注册
if($request->isMethod('post')){
$credentials=$request->only(['userName','password','confirmPassword']);//表单提交数据
$rules=UserService::make($location->organization_id)->getValidateRule($location->organization_id);
$validator=Validator::make($credentials,$rules);
if($validator->fails()){//验证不通过
returnRedirect::back()->withInput()->withErrors($validator);
}
$exists=User::where('name',$credentials['userName'])->first();
if($exists){
$result=Lang::has("register.userExists")?trans("register.userExists"):"Userexists";
return$this->_remind('error',$result,'register');
}
$user=newUser();
$user->name=trim($credentials['userName']);
$user->password=bcrypt($credentials['password']);
if($user->save()){
//注册成功
returnredirect('/login')->with('msg',Lang::has("register.success")?trans("register.success"):'RegisterSuccess.');
}else{
//注册失败
$validator->errors()->add('other',$user);//如果注册失败会把错误原因返回
returnRedirect::back()->withInput()->withErrors($validator);
}
}
returnview(get_organization_view('register',$organization_id),["location"=>$location->name]);//加载视图
}catch(\Exception$ex){
$this->_remind('error',$ex->getMessage(),'getActivationCode');
}
}
以上这篇laravel根据不同组织加载不同视图的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。