2017-07-19 42 views
1

建立转诊制度,我做了一个转诊制度在我laravel项目V5.4,但我有2个问题与:与Laravel

  1. 我的用户推荐连结会载入我的网站的索引页,而不是加载注册页面。 (我如何修复它?)
  2. 当用户注册引荐链接时,在邀请新用户的人的数据库和新用户本人中都不会发生任何事情。 (我如何获取信息在两个用户表吗?)

我只是用这个教程,让我的转诊制度: https://brudtkuhl.com/building-referral-system-laravel/

这是我CheckReferral中间件:

<?php 

namespace App\Http\Middleware; 
use Illuminate\Http\Response; 
use Closure; 

class CheckReferral 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     if($request->hasCookie('referral')) { 
      return $next($request); 
     } 
     else { 
      if($request->query('ref')) { 
       return redirect($request->fullUrl())->withCookie(cookie()->forever('referral', $request->query('ref'))); 
      } 
     } 
     return $next($request); 
    } 
} 

这是我的UserController

public function referral() { 
     $user = User::find(1); 
     return view('users.referral', compact('user')); 
    } 

这是我的路线:

Route::get('/referral', '[email protected]')->name('referral'); 

RegisterController

<?php 

namespace App\Http\Controllers\Auth; 

use App\User; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Foundation\Auth\RegistersUsers; 
use Cookie; 
use DB; 

class RegisterController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Register Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users as well as their 
    | validation and creation. By default this controller uses a trait to 
    | provide this functionality without requiring any additional code. 
    | 
    */ 

    use RegistersUsers; 

    /** 
    * Where to redirect users after registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/home'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'name' => 'required|string|max:255', 
      'username' => 'required|string|max:255|unique:users', 
      'email' => 'required|string|email|max:255|unique:users', 
      'password' => 'required|string|min:6|confirmed', 
      'g-recaptcha-response' => 'required|captcha', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 

     $referred_by = Cookie::get('referral'); 

     return User::create([ 
      'name' => $data['name'], 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
      'affiliate_id' => str_random(10), 
      'referred_by' => $referred_by, 
     ]); 
    } 

User型号

protected $fillable = [ 
     'name', 'username', 'email', 'password', 'affiliate_id', 'referred_by', 
    ]; 

,这就是它!

+0

你的问题是什么? – localheinz

+0

@localheinz上面的编号1&2是我的问题:\ –

+0

转介是注册还是工作申请? – Demonyowh

回答

0

如果这是注册做,这是第一次在你的路线,你应该有一个可选的输入是一个正确的方式..

Route::get('/register/{referral?},'Auth\[email protected]'); 

然后在你的观点,即控制器

public function registerPage($referral=0) 
{ 
    return view with the $referral variable .. 
} 

..你的表格应该看起来像这样..

<form action="/register/{{ referral }}" method="post" ..... > 

回到你的路线..

Route::post('/register/{referral},'Auth\[email protected]'); 
再次控制器

..

public function doRegister(Request $request, $referral) 
{ 
    $request->merge(['referred_by' => $referral]); 
} 

所以你referred_by为0或其他值..它取决于你如何处理验证..

+0

不帮! :\ –

+0

你想达到什么目的? – Demonyowh

+0

1-通过推荐链接让访问者注册页面2-不请自来,谁邀请谁和谁被谁邀请。 –

0

添加注册页面的url在这部分的值 - > url('/')

@if(!Auth::user()->affiliate_id) 
     <input type="text" readonly="readonly" 
       value="{{url('/').'/?ref='.Auth::user()->affiliate_id}}"> 
    @endif