我在laravel 4 app中有这条路线:
Route::controller('about','AboutController');
当我去http://website/about/imprint
时,我得到了印记,但是当我去http://website/about/imprint/12345
时,(在控制器中没有使用)我也得到了印记。它不会引发错误。
这是一个问题吗?我应该以某种方式捕获它并显示404错误,或者它无关紧要?
我甚至可以转到http://website/about/imprint/7/7/7/7
,但不会收到错误消息。
AboutController
看起来如此:
<?php
class AboutController extends BaseController
{
public function getIndex()
{
return View::make('about');
}
public function getImprint()
{
return View::make('imprint');
}
public function getDatenschutz()
{
return View::make('datenschutz');
}
}
答案 0 :(得分:1)
将imprint/
作为参数传递到getImprint()
函数后的任何内容。您可以通过更改getImprint()函数来打印出参数,如下所示:
public function getImprint() {
return "Imprint <br />Args: " . print_r(func_get_args(), true);
}
然后http://website/about/imprint/12345
会返回一个如下所示的页面:
Imprint
Args: Array ( [0] => 12345 )
和http://website/about/imprint/7/8/9/10
将返回如下所示的页面:
Imprint
Args: Array ( [0] => 7 [1] => 8 [2] => 9 [3] => 10 )
答案 1 :(得分:1)
我更喜欢在我的路线上使用这样的东西:
路由:: get(&#39; / about / imprint&#39;,&#39; AboutController @ getImprint&#39;)
但这只是我的意见。使用这种语法,它会自动为这样的事情提供NotFoundHTTPException&#39; / about / imprint / 7/7/7/7/7/7/7&#39;所以你不必检查它。
现在,如果你想要额外的东西,你可以有不同的路线,例如:
路由:: get(&#39; / about / imprint / {id}&#39;,&#39; AboutController @ getImprint&#39;) - &gt; where(&#39; id&#39;, &#39; [0-9] +&#39);
然后getImprint()看起来像这样:
function getImprint($id){
// can only get here if id is a number (based on where clause)
}