Mahbub
Mahbub

Reputation: 49

How to I get user role data in controller and displaying laravel

How do I display by dropdown in view page?

User model:

public function registrationRoles(){
    return [
       3=>'Teacher',
       4=>'Student'
    ];
}

My view page

<select class="select" name="role_id" id="all-categories">
    <option value="">Select One</option>
    <option value="">Teacher</option>
    <option value="">Student</option>
</select>

RegisterController

public function postRegister(Request $request)
    {
        $this->validate($request, [
            'first_name'    => 'required',
            'last_name'     => 'required',
            'email'         => 'required|email|unique:users',
            'phone'         => 'required|numeric',
            'password'      => 'required|min:6|confirmed'
        ]);

    $data = new User;
    $data->first_name    = $request->first_name;
    $data->last_name     = $request->last_name;
    $data->email         = $request->email;
    $data->phone         = $request->phone;
    $data->password      = bcrypt($request->password);
    // $data->role_id       = 0;
    $data->save();

    Session::flash('success', 'Waiting for admin approval');
    return redirect('/register');
}

..............................................................................................................................................................

Upvotes: 0

Views: 652

Answers (2)

user1972318
user1972318

Reputation: 34

If you are using blade:-

You can find the necessary readings here https://laravel.com/docs/4.2/html#drop-down-lists

{!! Form::select('role_id', <here you have to place returned value from registrationRoles>) !!}

Upvotes: 1

Marcus
Marcus

Reputation: 1848

You could start by hardcoding them in the html

<select class="select" name="role_id" id="all-categories">
    <option value="">Select One</option>
    <option value="0">Teacher</option>
    <option value="1">Student</option>
</select>

In your controller

public function postRegister(Request $request)
    {
        $this->validate($request, [
            'first_name'    => 'required',
            'last_name'     => 'required',
            'email'         => 'required|email|unique:users',
            'phone'         => 'required|numeric',
            'password'      => 'required|min:6|confirmed'
        ]);

    $data = new User;
    $data->first_name    = $request->first_name;
    $data->last_name     = $request->last_name;
    $data->email         = $request->email;
    $data->phone         = $request->phone;
    $data->password      = bcrypt($request->password);
    $data->role_id       = $request->role_id;
    $data->save();

    Session::flash('success', 'Waiting for admin approval');
    return redirect('/register');
}

Or you could populate the dropdown with the roles if your return the roles in the view like

$roles = Roles::all();
return view('yourView', compact('roles));

In your blade

<select class="select" name="role_id" id="all-categories">
    @foreach($roles as $role)
        <option value="{{ $role->id }}">{{ $role->name }}</option>
    @endforeach
</select>

Upvotes: 0

Related Questions