Postingan lainnya
[HELP] Authentication Register Bermasalah Laravel
Langsung aja gan, saya sedang belajar tentang Authentication di Laravel 5.4. Nah masalahnya setelah saya lakukan perintah 'php artisan make:auth' kan otomatis Laravel ngebuat file-file yang diperlukan. Ketika saya coba ke view register dan mencoba mendaftar saya mendapatkan error, --- Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, null given --- Tapi data yang diinput tetap masuk ke dalam database di dalam table users. Waktu saya coba login juga berjalan dengan baik. Kendalanya hanya pada saat register saja. Oiya, saya belum pernah mengubah kode apapun terkait file-file dalam authentication, saya hanya membuat CRUD sederhana di dalam instalan project ini. --- Karena saya penasaran, barusan saya coba bikin instalan Laravel yang masih fresh dan melakukan hal yang sama. Hasilnya mulus tidak ada masalah. Saya bandingkan dan teliti kode kedua instalan tersebut dan sepertinya tidak ada yang berbeda. Sudah googling dan main ke stackoverflow tapi masih belum paham. Mohon solusi dari temen-temen ^^ *beneran bingung hehe --- File: HomeController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('home');
}
}
File: RegisterController.php
<?php
namespace App\Http\Controllers\Auth;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
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 = '/';
/**
* 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 User
*/
protected function create(array $data)
{
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
4 Jawaban:
Itu function create ga ada returnnya, jadi user cuma di create aja tanpa di passing object usernya sendiri.
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return User ‹--- NOTE: mestinya return user
*/
protected function create(array $data)
{
// disini mestinya return User::create()
User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
Oiya gan. Berarti nilai returnnya kayak gimana gan?
bisa seperti ini
protected function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
return $user;
}