簡體   English   中英

從表單的選擇列表中傳遞ID,獲得“非對象”錯誤,Laravel-4

[英]Passing an id from a select list in a form, getting “non-object” error, Laravel-4

在儀表板頁面上,我以列出組件名稱的形式創建了一個選擇列表。 從選擇列表傳遞的值顯然是組件ID。 按下提交后,用戶將被轉到顯示該組件數據的頁面。 應該很簡單...

控制器:

public function showDashboard()
{
    $components = Component::lists('name','id'); ...
    return View::make('dashboard', array('components'=>$components, ...))
}

dashboard.blade.php:

{{ Form::open(array('route' => array('components.show', $components->id), 'method'=>'get')) }}
{{ Form::Label('id','Component:') }}
{{ Form::select('id', $components) }}
{{ Form::submit('Show Component', array('class'=>'button')) }}
{{ Form::close() }}

我嘗試了各種方法來執行此操作,並且每次都會收到不同的錯誤。 上面的代碼甚至不讓我顯示儀表板頁面-我收到“試圖獲取非對象的屬性”錯誤。 顯然,它不喜歡$ components,因為它是作為列表數組而不是對象傳遞的。 就像我說的那樣,我確定這很簡單,我只是想不出正確的語法,而Laravel文檔也沒有給我答案。 謝謝!

問題不在於下拉列表或list方法,而在於您打開表單時。 在這里,您將$components->id作為路由的參數,但是$components是一個數組,您無法訪問其id屬性。

終於想通了。 在此問題之后,我在這里發表了類似的問題,而不是重復答案,它在這里:

當控制器需要一個對象時,如何將ID值從選擇列表傳遞給控制器​​? laravel-4

非常簡短的版本:將Route ::更改為Route :: post。 上面鏈接中包含代碼的詳細信息。 問題解決了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM