laravel 表单生成错误操作 url / 路由错误
laravel form generates wrong action url / route error
我正在尝试在 laravel 中创建一个表单来更新一些数据。
我首先在我的 blade 模板中使用以下内容来使用模型中的数据填充表单:
{{ Form::model($sensor, array('action' => 'settingsController@editSensor', $sensor->s_id)) }}
$sensor 以这种方式从控制器发送到视图:
return view('settings.sensors.edit')->with('sensor', App\Sensor::find($sensorId))
文档没有明确说明我是否还需要使用 Form::open ,但是已经创建了表单打开标签,所以我认为这就足够了。
在我的路线中,我有这些路线:
Route::get('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => 'settingsController@editSensor']);
Route::post('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => 'settingsController@editSensor']);
我可以通过像 http://localhost:8000/settings/sensors/edit/105 这样的 url 来访问表单,预填充模型中的数据非常有效。
我遇到的问题是提交按钮现在可以使用了。它将提交给 http://localhost:8000/settings/sensors/edit/%7BsensorId%7D
显然,没有正确替换 sensorId 参数。
我在谷歌搜索后重写了 Form::model 函数调用:
{{ Form::model($sensor, array('route' => route('sensor.edit',$sensor->s_id)), $sensor->s_id) }}
当我现在打开页面时,我直接得到这个错误:Route [http://localhost:8000/settings/sensors/edit/105] not defined
这似乎很奇怪,因为我没有更改路线,并且为此 url 定义了一条路线。知道我哪里出错了吗?
您实际上是在重复路由调用。当您执行 Form::model($sensor, array('route' =>
时,Laravel 已经知道您正在尝试访问命名路由,并且需要一个路由名称。因此,当您执行 route(...)
时,它会先转换该路由调用,然后再尝试查找名为该路由的路由。
换句话说,它不是抱怨页面 http://localhost:8000/settings/sensors/edit/105
不存在 - 它抱怨没有路由将其作为其 as
名称。
删除它,并用一个包含路由名称和参数的数组替换它。然后你也可以去掉多余的$sensor->s_id
,像这样:
{{ Form::model($sensor, array('route' => array('sensor.edit', $sensor->s_id))) }}
我正在尝试在 laravel 中创建一个表单来更新一些数据。 我首先在我的 blade 模板中使用以下内容来使用模型中的数据填充表单:
{{ Form::model($sensor, array('action' => 'settingsController@editSensor', $sensor->s_id)) }}
$sensor 以这种方式从控制器发送到视图:
return view('settings.sensors.edit')->with('sensor', App\Sensor::find($sensorId))
文档没有明确说明我是否还需要使用 Form::open ,但是已经创建了表单打开标签,所以我认为这就足够了。
在我的路线中,我有这些路线:
Route::get('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => 'settingsController@editSensor']);
Route::post('/settings/sensors/edit/{sensorId}',['as' => 'sensor.edit', 'uses' => 'settingsController@editSensor']);
我可以通过像 http://localhost:8000/settings/sensors/edit/105 这样的 url 来访问表单,预填充模型中的数据非常有效。
我遇到的问题是提交按钮现在可以使用了。它将提交给 http://localhost:8000/settings/sensors/edit/%7BsensorId%7D 显然,没有正确替换 sensorId 参数。
我在谷歌搜索后重写了 Form::model 函数调用:
{{ Form::model($sensor, array('route' => route('sensor.edit',$sensor->s_id)), $sensor->s_id) }}
当我现在打开页面时,我直接得到这个错误:Route [http://localhost:8000/settings/sensors/edit/105] not defined
这似乎很奇怪,因为我没有更改路线,并且为此 url 定义了一条路线。知道我哪里出错了吗?
您实际上是在重复路由调用。当您执行 Form::model($sensor, array('route' =>
时,Laravel 已经知道您正在尝试访问命名路由,并且需要一个路由名称。因此,当您执行 route(...)
时,它会先转换该路由调用,然后再尝试查找名为该路由的路由。
换句话说,它不是抱怨页面 http://localhost:8000/settings/sensors/edit/105
不存在 - 它抱怨没有路由将其作为其 as
名称。
删除它,并用一个包含路由名称和参数的数组替换它。然后你也可以去掉多余的$sensor->s_id
,像这样:
{{ Form::model($sensor, array('route' => array('sensor.edit', $sensor->s_id))) }}