目前我对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']]);
答案 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)
如果您使用的是虚拟主机,请在vhost conf上添加此行。
loggerConfiguration = loggerConfiguration.WriteTo.ApplicationInsightsTraces(appInsightsIntrumentationKey, serilogLevel)
.WriteTo.RollingFile(Path.Combine(contentRoot, "Logs/log-{Date}.log"), retainedFileCountLimit: 14);