使用模态对话框将id从视图传递到控制器

时间:2015-11-01 16:13:18

标签: twitter-bootstrap laravel laravel-5 modal-dialog

我正在使用bootstrap模式来创建和更新用户。我设法让create function工作但不是更新。我的控制器如此工作,如果没有传递$ user-> id变量,它将创建一个新的用户,如果有$ user-> id,它将更新它。但是我无法想象如何将$ user-> id传递给控制器​​,因为我正在使用模态对话框。有人可以帮我弄这个吗?我的代码可以看作如下。

routes.php文件

Route::resource('manage_accounts', 'ManageAccountsController');

manage.blade.php

<button class="btn btn-sm btn-warning" type="button"
      data-toggle="modal" data-target="#form">Edit&nbsp;<i class="glyphicon glyphicon-edit"></i></button>

<button type="button" class="btn btn-info btn-md" data-toggle="modal" data-target="#form">Register New User</button>

<!-- Modal -->
<div id="form" class="modal fade" role="dialog">
    <div class="modal-dialog">

        <!-- Modal content-->
        <div class="modal-content">
           <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">User Information</h4>

...

Controller.php这样

class ManageAccountsController extends Controller
{
    public $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function index() 
    {
        $users = User::orderBy('name')->get();
        $roles = Role::all();

        return view('manage_accounts', compact('users', 'roles'));
    }

     public function store(StoreUserRequest $request)
    {
      // validation already handled using this: http://laravel.com/docs/5.0/validation#form-request-validation
        $this->userRepository->upsert($request);

        Session::flash('flash_message', 'User successfully added!');

        return redirect()->back();

    }

    public function update(StoreUserRequest $request, $id)
    {
        // validation already handled using this: http://laravel.com/docs/5.0/validation#form-request-validation
        $this->userRepository->upsert($request, $id);

        Session::flash('flash_message', 'User successfully updated!');

        return redirect()->back();

    }
}

class UserRepository {

    public function upsert($data, $id = null)
    {

            // You will also need something like this
            if(isset($data['id']))
            {
                $user = $this->user->find($data['id']);
            }
            else {
                $user = new User;
            }

            $user->name     = $data['name'];
            $user->email    = $data['email'];
            $user->password = Hash::make($data['password']);
            $user->mobile   = $data['mobile'];
            $user->role_id  = $data['role_id'];

            // save our user
            $user->save();

            return $user;
        }
    }

0 个答案:

没有答案