Ich erstelle einfache Verweis-System. Ich habe die Arbeit beendet, aber das Überweisungssystem scheint nicht richtig zu funktionieren, wahrscheinlich wegen Middleware. Ich werde das Problem klarer erklären.Laravel neue Middleware funktioniert nicht
So, hier ist mein Registerregler
protected function create(array $data)
{
$referred_by = Cookie::get('referral');
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'affiliate_id' => str_random(10),
'referred_by' => $referred_by
]);
}
und die Middleware
<?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('referral', $request->query('ref'), 30));
}
}
return $next($request);
}
}
ich auch Middleware hinzugefügt
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\App\Http\Middleware\CheckReferral::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
So zum Kernel, erhalten alle Benutzer die afflitiate_id
, aber keine von ihnen die reference_by
in der Datenbank
EDIT: Der Regler GANZE REG
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Requests;
use Illuminate\Http\Request;
use DB;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Cookie;
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 = '/dashboard';
/**
* 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',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data, Request $request)
{
$referred_by = $request->cookie('referral');
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'affiliate_id' => str_random(10),
'referred_by' => $referred_by
]);
}
}
Typ Fehler: Argument 2 an App \ Http \ Controllers \ Auth \ RegisterController :: create() übergeben muss eine Instanz von Illuminate \ Http \ Request sein, keine gegeben, in/Applications/MAMP/htdocs/invest/vendor aufgerufen /laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php on line 33 – Emin
Fügen Sie diese Zeile vor der Klassendeklaration hinzu: 'Illuminate \ Http \ Request;' –
Vielen Dank für Ihre Antwort. Es ist tatsächlich hier hinzugefügt ist der volle Register-Controller – Emin