[英]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');
}
現在,如果您需要將參數從前端發送到控制器,則有兩種選擇:
對於第一個選項,您需要在路由本身中定義所需/可選參數:
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);
}
為了使用查詢參數,在發出請求時應包括此選項。 如果您的路線如下所示:
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.