[英]Two Controllers and 1 View in Laravel
我有一個問題要解決Laravel 5.1中的一些計算問題,到目前為止,我找到的最佳解決方案是創建兩個不同的控制器,一個用於處理特定項目的計算:
Route::get('company/convert/{note}','ScenarioController@NoteConvert');
並且適用於所有項目:
Route::get('company/convert','ScenarioController@AllNotesConvert');
兩者都將使用渲染相同的視圖。
我的問題是:這樣做是一種好習慣嗎?
在我的腦海中,一個好的解決方案是只使用一條路線,並通過請求在一些變量中接收1個特定的音符或全部。 就像是:
$ http.get( '/公司/轉換/',數據)
data
將接收將要轉換的1個或所有注釋。
PS:我正在使用AngularJS來調用這些路由。
如果您希望在控制器中使用一種方法,則必須稍微更改路線:
Route::get('company/convert/{note?}','ScenarioController@NoteConvert');
你的方法就像是
public function NoteConvert($note=null)
{
if ($note == null) {
// do all convertions
return view()
}
// single convertion
...
}
這種方式NoteConvert方法將是處理多個和單個轉換的方法。
別忘了刪除
Route::get('company/convert','ScenarioController@AllNotesConvert');
它將不再是必要的
編輯: https : //laravel.com/docs/5.2/routing#parameters-optional-parameters
對我來說最好的方法是在URL中傳遞一個可選參數並在控制器上檢查它。
我認為您的任務是使用視圖中的note參數使用過濾器生成所有項目和特定數據的數據。
我建議你創建這樣的路線
Route::controller('company', 'ScenarioController');
然后用這樣的兩個函數創建一個控制器
public function getIndex()
{
return view('convert');
}
這里轉換是名稱視圖刀片。
public function postFilter($note)
{
$x= // do what you want
return view('convert', compact('x'));
}
然后使用復選框在刀片中添加過濾器,並將表單操作URL設置為“company / filter / {note}”。
這是我認為更好的做法。
在這里提到隱式路由。 https://laravel.com/docs/5.1/controllers
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.