当需要params缺失时,Laravel路由不显示错误

时间:2018-02-20 11:20:06

标签: php laravel routes laravel-5.4

目前我对Laravel有些奇怪,无法弄清楚错误

如果我没有在网址中包含参数,我的控制器应该重定向,但它没有。我试过抛出一些文字,但我得到的只是一个纯白色的屏幕,除非我在网址中包含了参数。该参数设置为可选。即使我删除了?以使param变得疯狂,我仍然会看到一个白色的屏幕,我希望会出现某种错误。

其他路线除了有问题的路线组外,还可以正常工作。

这是我的控制器的缩减版本

class CustomerRequirementsController extends Controller
{
    public function index($id = '')
    {
        debug('sdfgsdfgdsg');
        exit;
        //if the id has been removed from the url, redirect back to quotes summary table
        if(empty($id)) {
            return redirect()->route('quote.index');
        }
        ...
    }

这是我的问题路线

Route::prefix('quotes')->group(function () {
    Route::get('/{id?}', 'QuoteController@show')->name('quote.show');

    Route::post('/customer-requirements/add-group', 'CustomerRequirementsController@ajax')->name('customer-requirements.add-group');
    Route::get('/customer-requirements/{id?}', 'CustomerRequirementsController@index')->name('quote.customer-requirements.index');
    Route::resource('/customer-requirements', 'CustomerRequirementsController', ['except' => ['show', 'destroy']]);

4 个答案:

答案 0 :(得分:1)

我之前遇到过同样的问题。

您的第一条路线Route::get('/{id?}', 'QuoteController@show')->name('quote.show');在任何其他路线之前被召唤。

你的节目功能是否会返回视图....或者其他什么?如果是,请尝试移动到路线组的底部

答案 1 :(得分:0)

{id}可以解决您的问题,而不是{id?}可选,{id}​​可以强制解决您的问题。

答案 2 :(得分:0)

你有一个逻辑错误,你的if永远不会是真的,因为你的$id param永远不会是空的,它总是赋值,在这种情况下,如果它不在url中,它就是赋值''未通过empty检查。因此,如果您$id = null然后if(is_null($id))

,您会感觉更好

答案 3 :(得分:0)

Laravel& Nginx:

如果您使用的是虚拟主机,请在vhost conf上添加此行。

 loggerConfiguration = loggerConfiguration.WriteTo.ApplicationInsightsTraces(appInsightsIntrumentationKey, serilogLevel)
.WriteTo.RollingFile(Path.Combine(contentRoot, "Logs/log-{Date}.log"), retainedFileCountLimit: 14);

了解更多:https://laravel.com/docs/5.4#web-server-configuration