我正在使用Laravel 5.0
我在MyController
public function myMethod($id) {
dd($id);
}
routes.php
文件
Route::post('path1/{obj-id}/path2', 'MyController@myMethod');
Route::resource('path1', 'MyController');
在视图文件中,我通过提交
上的表单调用方法{!! Form::open(['action' => ['MyController@myMethod', $myObject->id]]) !!}
现在问题是,每次点击Submit
我都会收到404
错误。地址栏中的网址按预期更改为path1/1/path2
,但我得到404
。
我哪里错了?
答案 0 :(得分:1)
我自己得到了解决方案。
事实证明,在一条路线中DataView dv = new DataView(grid);
myGridView.DataSource = dv;
myGridView.DataBind();
内不能有短划线(-
)。
{}
中的路线最初是
routes.php
我把它改成了
Route::post('path1/{obj-id}/path2', 'MyController@myMethod');
现在一切正常。
很抱歉错过了原始问题中的Route::post('path1/{id}/path2', 'MyController@myMethod');
。感谢所有试图提供帮助的人。
答案 1 :(得分:0)
问题在于你的路线。
Route :: post(' path1 / {id}',' MyController @ myMethod');
在View中,你错过了Post方法。将您的观点更改为以下
{!! Form :: open([' action' => [' MyController @ myMethod',$ myObject-> id,' method' =>&#39 ; post']])!!}
希望这有帮助!
答案 2 :(得分:0)
您可以为路线指定名称,并在表格中使用此名称
Route::post('path1/{id}/path2', [
'as' => 'myroute', 'uses' => 'MyController@myMethod'
]);
现在在你的表格中使用它
Form::open(array('route' => array('myroute', $myObject->id)))
答案 3 :(得分:0)
您需要使用以下任何一种方法,而不是使用{!! Form::open(['action' => ['MyController@myMethod', $myObject->id]]) !!}
:
{!! Form::open(['url' => 'path1/'.$myObject->id.'/path2']) !!}
或者,如果您使用Name routes
即mymethod.update
,则可以轻松地使用{!! Form::open(['routes' => ['mymethod.update', $myObject->id]]) !!}
:
'action'
顺便说一句,如果你真的想使用routes.php
,你需要在Route::post('path1/path2/{id}', 'MyController@myMethod');
Route::resource('path1', 'MyController');
文件中更改这样的网址:
hexdec()
希望这有帮助!