2014-06-24 69 views
0

我總是發送像這樣的視圖的數據,如->with(array('message'=>'there is an error ')),它的工作原理。laravel使用從控制器發送的視圖中的數據

我想允許用戶編輯一些信息,所以當他/她點擊了編輯一樣,正在執行中的控制這個功能:

public function edit($id) 
    { 
     $waitingTimes = WaitingTimes::find($id); 
     return View::make('waitingtimes.edit')->with(array(
      'verticalMenu' => 'none', 
      'verticalMenuTab' => 'none', 
      'data' => $waitingTimes 
     )); 
    } 

所以在後面的觀點,我應該可以這麼說:

$data->startTime, $data->endTime, $data->id, $data->restaurant_id 

但每次我這樣做,我得到了瀏覽器上顯示$data->startTime,但我應該已經得到了startTime屬性的值時。

這是我的看法:

<div class="oneInfo"> 
      {{ Form::text('startTime', '', array('class' => 'time ui-timepicker-input', 'id' => 'startTime', 'autocomplete' => 'off'))}} 
      <span class="errorMessage"> 
       <?php 
       echo $errors->first('startTime'); 
       ?> 
      </span> 
     </div> 

視圖有一個輸入文本和我想的是輸入的文本來填充已經從控制器發送的數據。

我該怎麼做?

+0

從外觀上看,你可以通過使用** [form model binding](http://laravel.com/docs/html#form-model-binding)**來解決這個問題。有一個免費的** [Laracast](https://laracasts.com/lessons/form-model-binding)**處理該主題。 – Jeemusu

+0

@Jeemusu聽起來很有趣,讓我試試吧 –

+0

@Jeemusu以及如何填寫投入?會自動填充嗎?在我的情況下,他們不是 –

回答

1

Form::text()方法的第二個參數允許您將要分配給輸入元素的值傳遞給它。您的表單輸入聲明當前將輸入的值設置爲空字符串。

處理此問題的最佳方法是用$value=null替換空字符串。

{{ Form::text('startTime', $value=null, array('class' => 'time ui-timepicker-input', 'id' => 'startTime', 'autocomplete' => 'off'))}} 

這會自動將您的模型數據或由用戶輸入的數據替換值(應驗證失敗,你重定向回的形式)。

通過使用form model bindingWaitingTimes模型綁定到窗體,從外觀上看,還可以讓事情變得更加簡單。

+0

只需要一件事,當我提交表單時,我得到了'MethodNotAllowedHttpExcpetion'與你告訴我的「表單模型綁定」有關? –

+0

不能確定沒有更多的信息,但它聽起來像它可能是你的路線聲明?你有沒有創建一個郵政路線? – Jeemusu

+0

在更新方法中,我猜,我需要一個'put'方法而不是'post'吧?所以我在表單中聲明瞭一個'put'請求:'{{Form :: model($ data,array( 'route'=> array('waitingtimes.update',$ data-> id) ,' class'=>'mainInformationContrainer', 'method',=>'put' ))}}'我忘記了什麼? –

相關問題