未找到自定义Laravel路线

时间:2016-10-17 19:42:49

标签: php laravel-5 routing

我创建了一个自定义控制器操作来保存配置对象的“第二级”,因为初始表单会保存凭据,然后用于从Web服务中提取可用项目。

第二级配置方法是

ConfigurationController

public function storeTest(Request $request)
{
    dd($request);
}

路由已添加到web.php路由文件中:

web.php

// configuration routes
Route::resource('configurations', 'ConfigurationController');
Route::put('configurations/test/{$id}', 'ConfigurationController@storeTest')->name('configurations.test_update');

php artisan route:list的输出正确显示路线:

| PUT | configurations/test/{$id} | configurations.test_update | App\Http\Controllers\ConfigurationController@storeTest | web 

最后我的表单,使用LaravelCollective表单包:

{!! Form::model($configuration, ['action' => ['ConfigurationController@storeTest', $configuration->id], 'method' => 'put']) !!}

在表单页面上查看源代码显示该操作看起来正确:

<form method="POST" action="http://myapp.app/configurations/test/20010504142745046252000000" accept-charset="UTF-8"><input name="_method" type="hidden" value="PUT">

但是当提交表单时,会抛出一个错误,指出NotFoundHttpException in RouteCollection.php line 161

1 个答案:

答案 0 :(得分:0)

错误非常简单。在路线中,您不需要将美元符号与变量一起使用:

Route::put('configurations/test/{$id}', 'ConfigurationController@storeTest')->name('configurations.test_update');

不正确。它应该只读:

Route::put('configurations/test/{id}', 'ConfigurationController@storeTest')->name('configurations.test_update');

这解决了这个问题。感谢那些评论的人的帮助。