Laravel4路由到带参数的方法

时间:2014-03-28 08:20:03

标签: php laravel-4

我刚开始在CodeIgniter之后与Laravel合作,有些事情让我很困惑。

我有PagesController负责显示静态网页,例如关于,联系,隐私等等。

现在,我不想在PagesController上创建3-4个方法,而是创建一个名为ShowPage($which) { }的方法,并知道要显示哪个页面。

事情是>我无法理解路线问题:

Route::get('about','PagesController@ShowPage'); <--- I need to pass 'about' here
Route::get('contact','PagesController@ShowPage');
Route::get('about','PagesController@ShowPage');

这可能或者我是否需要为每种情况创建一种方法?

这是我的确切代码:

控制器:

class PagesController extends BaseController {

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

路线:

Route::get('about','PagesController@showPage');
Route::get('contact','PagesController@showPage');
Route::get('about','PagesController@showPage');`

3 个答案:

答案 0 :(得分:0)

他们已经被传递给方法了:

public function ShowPage($which){
  switch($which){
   case 'about':
        // do something
        break;
   case 'contact':
        // do something else
        break;
   default:
        break;
  }
}

答案 1 :(得分:0)

您可以使用

直接访问控制器内的路径
switch(Request::path()){}

解析为约,联系等。

另一种方法是使用

Route::get('{page}', 'PagesController@ShowPage');

将传递控制器中的变量,如

public function showPage($page){}

但请注意,此路线将匹配任何路径,

如果上面没有其他匹配。

答案 2 :(得分:0)

你可以试试这个:

// In your routes.php (This route will match only this route because of "where")
Route::get('{page}','PagesController@showPage')->where('page', 'about|contact');

如果你使用http://example.com/about(或contact)它会工作,但是有了其他价值,它就不会起作用,换句话说,这条路线不会没有用aboutcontact

然后在你的控制器中试试这个:

class PagesController extends BaseController {
    public function showPage($page) {
        // use $page, don't use use switch, $page will be either about or contact
    }
}