簡體   English   中英

Laravel:Controller如何從Route訪問參數?

[英]Laravel: How does Controller access parameters from Route?

我顯然是Laravel的菜鳥,希望有人能幫助我。

通過路線訪問“關於”屏幕

 Route::get('/about', array('as' => 'about', function()
 {
    return View::make('about')->with('title','About Screen')->with('class','about');
 }));

變量$ title和$ class可以通過{{$ title}}和{{$ class}}在about.blade.php中訪問。 如果相反,我之間有一個控制器,

 Route::get('hello/create', array('as' => 'create', 'uses' => 
 'HelloController@create', function()
 {
    return View::make('hello/create')->with('title','Create')->with('class','hello.create');
 }));

如何在HelloController.php代碼中訪問$ title和$ class(以便可以將值傳播到即將到來的View)?

PS我確實知道/ hello / create / {變量名},幾乎可以回答所有與此類似的問題,但是我不知道如何使用它來傳遞未鍵入Http請求的變量。

$title$class是您手動提供給刀片的值。 這些不是您在路由的GET參數中接收的值。 因此,您將執行與關閉操作相同的方法。

您的路線:

Route::get('hello/create', array('as' => 'create', 'uses' => 'HelloController@create'));

控制器方式:

class HelloController{
 public function create(){
  return View::make('hello/create')->with('title','Create')->with('class','hello.create');
 }
}

更新:

據我了解,您還可以在路由的閉包內部調用控制器的方法,並將參數傳遞給控制器​​,並在控制器的方法內部使用這些值調用視圖。

您的路線文件:

use App\Http\Controllers\HelloController;

Route::get('hello/create',function(){
    $hello_obj = new HelloController();
    return $hello_obj->create('create','hello.create');
});

控制器方式:

class HelloController{
 public function create($title,$class){
  return View::make('hello/create')->with('title',$title)->with('class',$class);
 }
}

首先,您需要清除流程。 您-目前-手動將變量設置為可返回視圖,因此您的路線應如下所示:

Route::get('hello/create', 'HelloController@create');

然后,您的控制器處理邏輯:

public function create(Request $request)
{
    return view('hello.create')->with('title','Create')->with('class','hello.create');
}

現在,如果您需要將參數從前端發送到控制器,則有兩種選擇:

  1. 定義路線參數
  2. 使用查詢參數。

選項1

對於第一個選項,您需要在路由本身中定義所需/可選參數:

Route::get('hello/create/{a_variable}', 'HelloController@create');

然后,您可以通過以下任何一種方式訪問​​此參數:

public function create(Request $request)
{
    return view('hello.create')->with('a_variable', $request->a_variable);
}

或在方法中注入變量:

public function create(Request $request, $a_variable)
{
    return view('hello.create')->with('a_variable', $a_variable);
}

選項2

為了使用查詢參數,在發出請求時應包括此選項。 如果您的路線如下所示:

Route::get('hello/create', 'HelloController@create');

您可以這樣指定查詢參數:

GET www.my-domain.com/hello/create?first_parameter=value_1&second_parameter=value_2

因此,在您的控制器中,您可以按以下方式訪問此值:

public function create(Request $request)
{
    $value_1 = $request->get('first_parameter');
    $value_2 = $request->get('second_parameter');

    return view('hello.create')
               ->with('value_1', $value_1)
               ->with('value_2', $value_2);
}

您正在使用with()發送數據以進行查看。 使用with()中設置的$ variablename在視圖文件中回顯示例: <?php echo $title; ?> <?php echo $title; ?>

暫無
暫無

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

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