Laravel 5:将其他参数传递给Controller

时间:2016-05-09 11:45:54

标签: php laravel

我正在使用Laravel 5来构建一个网站,并且有一些页面,其内容将用Blade编写(例如,关于,条款和条件等)以及其他将从数据库(一般博客文章)中提取的页面。

我想编写一个控制器并运行一个开关盒来显示特定的视图。

e.g。

PagesController@showPage

public function showPage($page){
 switch ($page) {
    case 'about':
        $view = 'frontend.about';
        break;
    case 'terms':
        $view = 'frontend.terms';
        break;
    ...
    default:
        $view = 'frontend.home'
        break;
}

return view($view);
}

但是如何在Routes.php中传递其他参数?

//Route to About page
Route::get('/about',['as'=>'about','uses'=>'PagesController@showPage']);

//Route to Terms
Route::get('/terms',['as'=>'terms','uses'=>'PagesController@showPage']);

类似的东西:

//Route to Terms
    Route::get('/terms',['as'=>'terms','uses'=>'PagesController@showPage'])->with(['page'=>'terms']);

2 个答案:

答案 0 :(得分:0)

在路线中传递变量非常容易。看看下面的代码。

 Route::get('/terms/{page}',['as'=>'terms','uses'=>'PagesController@showPage']);

您可以在控制器操作中访问此值,如下例所示。

function showPage($page){
   echo $page;
}

答案 1 :(得分:0)

使您的网页路由如下:

Route::('/pages/{slug}', 'PagesController@showPage') ;

每次创建路线时都要这样做:

route('/pages', ['slug' => 'about']);

从您的控制器获取slug:

function showPage($slug) {
  switch($slug) :
    //write your cases
 }