Postingan lainnya
Laravel Store to Database doesn't work and false redirect
| <?php
|
| namespace App\Http\Controllers\Auth;
|
| use App\Http\Controllers\Controller;
| use App\Models\User;
| use Illuminate\Support\Facades\DB;
| use Illuminate\Http\Request;
| use Illuminate\Support\Facades\Auth;
| use Illuminate\Support\Facades\Hash;
| use Illuminate\Support\Facades\Redirect;
|
| class RegisterController extends Controller
| {
| public function index()
| {
| return view("auth.register");
| }
|
| public function postRegister(Request $req)
| {
|
| $credentials = $req->validate([
| "name" => 'required',
| "identity" => 'required|digits:10|numeric',
| "email" => 'required|email',
| "password" => 'required'
| ]);
|
| if(!Auth::check($credentials))
| {
| return redirect()->back();
| }else{
|
| DB::table("users")->insert([
| 'name' => $req->name(),
| 'identity' => $req->identity(),
| 'email' => $req->email(),
| 'roles' => "student",
| 'password' => Hash::make($req->password())
| ]);
|
| $req->session()->regenerate();
|
| return redirect("/dashboard");
| };
|
| }
Permisi semuanya, izin bertanya terkait kode diatas yang tidak bisa memasukkan data ke database dan salah redirect. Thank You!
0
1 Jawaban:
Terdapat beberapa perubahan yang perlu dilakukan pada kode di atas untuk memperbaiki masalah tersebut:
- Pada bagian if(!Auth::check($credentials)) ganti menjadi if(!Auth::attempt($credentials)), karena fungsi Auth::check() hanya memeriksa apakah pengguna telah login, sedangkan Auth::attempt() digunakan untuk mencoba melakukan otentikasi pengguna dengan kredensial yang diberikan.
- Pada bagian DB::table("users")->insert([ 'name' => $req->name(), 'identity' => $req->identity(), 'email' => $req->email(), 'roles' => "student", 'password' => Hash::make($req->password()) ]); pastikan bahwa nama kolom pada tabel database sesuai dengan nama yang diberikan pada method insert(). Jika terdapat perbedaan nama, maka perlu dilakukan perubahan pada nama kolom.
- Pada bagian return redirect("/dashboard"); pastikan bahwa rute "/dashboard" telah didefinisikan pada file web.php dan ditangani oleh controller yang sesuai.
<?phpnamespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Redirect;
class RegisterController extends Controller { public function index() { return view("auth.register"); }
public function postRegister(Request $req) { $credentials = $req->validate([ "name" => 'required', "identity" => 'required|digits:10|numeric', "email" => 'required|email', "password" => 'required' ]); if(!Auth::attempt($credentials)) { return redirect()->back(); } else { DB::table("users")->insert([ 'name' => $req->name, 'identity' => $req->identity, 'email' => $req->email, 'roles' => "student", 'password' => Hash::make($req->password) ]); $req->session()->regenerate(); return redirect("/dashboard"); } }
}
0
Tanggapan
Baik, saya akan coba kak!