2014-03-19 2 views
0

데이터베이스의 기존 항목을 편집하기위한 양식을 작성하는 중입니다. 이 작업을 수행하려면 Form :: Model 방식을 사용하고 있지만 작동하지 않는 것 같습니다. 필드는 그냥 비어 있습니다.Laravel 'Form :: model'이 (가) 내 편집 양식을 채우지 않습니다.

ServerController.php

/** 
* Editing servers 
*/ 
public function edit($name) 
{ 
    $server = Server::find($name); 
    $keywords = ($server->getKeywords()) ? $server->getKeywords() : array(); 
    $countries = $this->getCountries(); 
    return View::make('server/edit', array('server' => $server, 'countries' => $countries)); 
} 

public function update($name) 
{ 
    $server = Server::find($name); 
    // Did it succeed? 
    if($server->save()) { 
    Session::flash('success', 'You server was edited!'); 
    return Redirect::route('server.view', array($name)); 
    } 

    // Did not validate 
    if(Input::get('keywords')) { 
    $keywords = Input::get('keywords'); 
    Session::flash('keywords', $keywords); 
    } 
    Session::flash('danger', "<b>Oops! There were some problems processing your update</b><br/>" . implode("<br/>", $server->errors()->all())); 
    return Redirect::route('server.edit', array($name))->withInput()->withErrors($server->errors()); 
} 

{{ Form::model($server, array('route' => array('server.update', $server->name), 'class' => 'form-horizontal', 'role' => 'form', 'files' => true)) }} 
    <div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}"> 
    {{ Form::label('email', 'Email', array('class' => 'control-label col-md-4')) }} 
    <div class="col-md-4"> 
     {{ Form::text('email', '', array('class' => 'form-control')) }} 
     {{ $errors->first('email', '<br/><div class="alert alert-danger">:message</div>') }} 
    </div> 
    </div> 
    (some more fields) 
{{ Form::close() }} 
+0

당신은'리턴 (위해서 var_dump ($ 서버)) 할 경우, '편집() 함수의 끝 (기존'return' 호출 전)에서이 서버를 반환하지 개체 또는 null? '$ name'은 ID 번호 또는 이름 문자열입니까? –

+0

예, 전체 서버 객체를 반환합니다. $ name은 이름 문자열이지만 문제가되지 않도록 기본 키를 변경했습니다. 뷰에서 $ server 변수를 사용하여 내용을 읽을 수도 있습니다. – Moeflon

답변

7

문제는 여기에 기본 필드 값으로 빈 문자열에 전달하는 것입니다. 문서에 here이 명시되어 있기 때문에 명시 적으로 전달 된 값은 모델 특성 데이터보다 우선합니다. '' 대신 null를 사용해보십시오 :

{{ Form::text('email', null, array('class' => 'form-control')) }} 
관련 문제