2013-12-22 74 views
1

我正在使用框架Laravel。UserController :: edit()缺少參數2 - Laravel

我有2個表格(用戶和人員)。當我要編輯的用戶,並在同一時間的人,我得到錯誤信息:

缺少論據2 UserController中::編輯()

表用戶

CREATE TABLE IF NOT EXISTS `festival_aid`.`users` (
    `user_id` BIGINT NOT NULL AUTO_INCREMENT, 
    `user_username` VARCHAR(45) NOT NULL, 
    `user_email` VARCHAR(45) NOT NULL, 
    `user_password` CHAR(32) NOT NULL, 
    `user_salt` CHAR(32) NOT NULL, 
    `user_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    `user_modified` TIMESTAMP NULL, 
    `user_deleted` TIMESTAMP NULL, 
    `user_lastlogin` TIMESTAMP NULL, 
    `user_locked` TIMESTAMP NULL, 
    `user_token` VARCHAR(128) NULL, 
    `user_confirmed` TIMESTAMP NULL, 
    PRIMARY KEY (`user_id`, `person_id`), 
    UNIQUE INDEX `user_email_UNIQUE` (`user_email` ASC), 
    INDEX `fk_users_persons1_idx` (`person_id` ASC), 
    CONSTRAINT `fk_users_persons1` 
    FOREIGN KEY (`person_id`) 
    REFERENCES `festival_aid`.`persons` (`person_id`) 
    ON DELETE CASCADE 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

表人士

CREATE TABLE IF NOT EXISTS `festival_aid`.`persons` (
    `person_id` BIGINT NOT NULL AUTO_INCREMENT, 
    `person_firstname` VARCHAR(45) NULL, 
    `person_surname` VARCHAR(45) NULL, 
    `person_created` TIMESTAMP NOT NULL, 
    `person_modified` TIMESTAMP NULL, 
    `person_deleted` TIMESTAMP NULL, 
    PRIMARY KEY (`person_id`)) 
ENGINE = InnoDB; 

型號人

class Person extends Eloquent { 

    protected $table = 'persons'; 

    protected $primaryKey = 'person_id'; 

    public function person() 
    { 
     return $this->belongsTo('User'); 
    } 

    public $timestamps = false; 
} 

的UserController中與編輯和更新

public function edit($user_id, $person_id) 
{ 
    $user = User::find($user_id); 
    $person = Person::find($person_id); 

    return View::make('users.edit') 
     ->with('user', $user) 
     ->with('person', $person); 
} 

public function update($user_id, $person_id) 
{ 
    $rules = array(
     'person_firstname' => 'required', 
     'person_lastname' => 'required', 
     'user_username' => 'required|unique:users', 
     'user_email' => 'required|unique:users|email', 
    ); 
    $validator = Validator::make(Input::all(), $rules); 

    if ($validator->fails()) { 
     Redirect::to('users/' . $user_id . '/' . $person_id . '/edit') 
      ->withErrors($validator) 
      ->withInput(Input::except('user_password')); 
    } else { 
     $user = User::find($user_id); 
     $person = Person::find($person_id); 

     $person->person_firstname = Input::get('person_firstname'); 
     $person->person_lastname = Input::get('person_lastname'); 
     $user->user_username = Input::get('user_username'); 
     $user->user_email = Input::get('user_email'); 

     $user->save(); 
     $person->save(); 

     Session::flash('message', 'Successfully updated user!'); 
     return Redirect::to('users/index'); 
    } 

查看編輯

<legend>Edit {{ $person->person_firstname }}</legend> 

{{ HTML::ul($errors->all()) }} 

    {{ Form::model($user, $person, array('method' => 'PUT')) }} 

    <div class="form-group"> 
     {{ Form::label('firstname', 'Firstname') }} 
     {{ Form::text('person_firstname', Input::old('firstname'), array('class'=>'form-control', 'placeholder' => 'Firstname')) }} 
    </div> 

    <div class="form-group"> 
     {{ Form::label('surname', 'Surname') }} 
     {{ Form::text('person_surname', Input::old('surname'), array('class'=>'form-control', 'placeholder' => 'Surname')) }} 
    </div> 

    <div class="form-group"> 
     {{ Form::label('username', 'Username') }} 
     {{ Form::text('user_username', Input::old('username'), array('class'=>'form-control', 'placeholder' => 'Username')) }} 
    </div> 

    <div class="form-group"> 
     {{ Form::label('email', 'Email') }} 
     {{ Form::text('user_email', Input::old('email'), array('class' => 'form-control')) }} 
    </div> 

    <div class="form-group"> 
     {{ Form::label('Password') }} 
     {{ Form::password('user_password', array('class'=>'form-control', 'placeholder' => 'Password')) }} 
    </div> 

    {{ Form::submit('Edit the User!', array('class' => 'btn btn-primary')) }} 

    {{ Form::close() }} 

的路線

Route::get('/users/{user_id}/edit', '[email protected]'); 

我在做什麼錯?

回答

5

你的函數聲明中指定了兩個參數:

public function edit($user_id, $person_id) 

然而,該路由才注入一個參數user_id

Route::get('/users/{user_id}/edit', '[email protected]'); 

它應該是這樣的:

Route::get('/users/{user_id}/{person_id}/edit', '[email protected]'); 

還是從函數聲明刪除$person_id

+0

現在它給了我:Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException。我認爲它現在無法找到路線.. – Gilko

+0

我也改變了返回Redirect ::到('users /'。$ user_id。'/ edit')到這個返回Redirect ::到('users /'。 $ user_id。'/'。$ person_id。'/ edit')在更新操作中 – Gilko

+0

您需要確保指向編輯頁面的任何鏈接都具有相關更新,比較網址和定義的路由。現在你知道它爲什麼會發生,你可能會想出來。同時用新數據更新原始問題作爲編輯。 – SamV