我刚开始在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');`
答案 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
)它会工作,但是有了其他价值,它就不会起作用,换句话说,这条路线不会没有用about
或contact
。
然后在你的控制器中试试这个:
class PagesController extends BaseController {
public function showPage($page) {
// use $page, don't use use switch, $page will be either about or contact
}
}