控制器方法未被调用

时间:2016-06-04 04:36:37

标签: laravel laravel-5

我正在使用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

我哪里错了?

4 个答案:

答案 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 routesmymethod.update,则可以轻松地使用{!! Form::open(['routes' => ['mymethod.update', $myObject->id]]) !!}

'action'

顺便说一句,如果你真的想使用routes.php,你需要在Route::post('path1/path2/{id}', 'MyController@myMethod'); Route::resource('path1', 'MyController'); 文件中更改这样的网址:

hexdec()

希望这有帮助!