laravel 4 - Route :: controller - 未使用的参数

时间:2014-11-12 19:53:09

标签: php laravel-4 routes http-status-code-404

我在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');
    }
}

2 个答案:

答案 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)
}