Level 88
You didn't give your input a name and therefore it's never posted. Try this
<label>
<input type="checkbox" value="{{$role->id}}" name="roles[]">
{{ $role->display_name }}
</label>
2 likes
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
<!-- /.content-header -->
<div class="container">
<div class="columns m-t-10">
<div class="column">
</div>
</div>
<hr class="m-t-0">
<form action="{{route('users.store')}}" method="POST">
{{csrf_field()}}
<div class="columns">
<div class="column">
<div>
<label for="name" class="label">Name</label>
<input type="text" class="input" name="name" id="name">
</div>
<div>
<label for="email" class="label">Email:</label>
<input type="text" class="input" name="email" id="email">
</div>
<div >
<label for="password" class="label">Password</label>
<input type="text" class="input" name="password" id="password" placeholder="enter password">
</p>
</div>
</div> <!-- end of .column -->
<div class="column">
<label for="roles" class="label">Roles:</label>
@foreach ($roles as $role)
<div class="field">
<label><input type="checkbox" value="{{$role->id}}"> {{$role->display_name}} </label>
</div>
@endforeach
</div>
</div> <!-- end of .columns for forms -->
<div class="columns">
<div class="column">
<hr />
<button class="btn btn-primary" style="width: 250px;">Create New User</button>
</div>
</div>
</form>
</div> <!-- end of .flex-container -->
/*my controller is here */
<?php
namespace App\Http\Controllers\manage;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\User;
use App\Role;
use DB;
use Session;
use Hash;
use Input;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::orderBy('id', 'desc')->paginate(10);
return view('manage.users.index')->withUsers($users);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$roles = Role::all();
return view('manage.users.create')->withRoles($roles);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validateWith([
'name' => 'required|max:255',
'email' => 'required|email|unique:users'
]);
if (!empty($request->password)) {
$password = trim($request->password);
} else {
# set the manual password
$length = 10;
$keyspace = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$str = '';
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$str .= $keyspace[random_int(0, $max)];
}
$password = $str;
}
$user = new User();
$user->name = $request->name;
$user->email = $request->email;
$user->password = Hash::make($password);
$user->save();
if ($request->roles) {
$user->syncRoles(explode(',', $request->roles));
}
return redirect()->route('users.show', $user->id);
// if () {
//
// } else {
// Session::flash('danger', 'Sorry a problem occurred while creating this user.');
// return redirect()->route('users.create');
// }
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$user = User::where('id', $id)->with('roles')->first();
return view("manage.users.show")->withUser($user);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$roles = Role::all();
$user = User::where('id', $id)->with('roles')->first();
return view("manage.users.edit")->withUser($user)->withRoles($roles);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validateWith([
'name' => 'required|max:255',
'email' => 'required|email|unique:users,email,'.$id
]);
$user = User::findOrFail($id);
$user->name = $request->name;
$user->email = $request->email;
if ($request->password_options == 'auto') {
$length = 10;
$keyspace = '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ';
$str = '';
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$str .= $keyspace[random_int(0, $max)];
}
$user->password = Hash::make($str);
} elseif ($request->password_options == 'manual') {
$user->password = Hash::make($request->password);
}
$user->save();
$user->syncRoles(explode(',', $request->roles));
return redirect()->route('users.show', $id);
// if () {
// return redirect()->route('users.show', $id);
// } else {
// Session::flash('error', 'There was a problem saving the updated user info to the database. Try again later.');
// return redirect()->route('users.edit', $id);
// }
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
You didn't give your input a name and therefore it's never posted. Try this
<label>
<input type="checkbox" value="{{$role->id}}" name="roles[]">
{{ $role->display_name }}
</label>
Please or to participate in this conversation.