2017-07-19 24 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