簡體   English   中英

Laravel中的兩個控制器和一個視圖

[英]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.

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