我有一个控制器,在其中我有几种方法。我的问题是如何将Controller的操作设置为我的表单:
Scan 0 Match FolderName:* count 10000
显然这给了一个着名的例外:
Action App \ Http \ Controllers \ ExamenController @ InsertUser未定义.... blablabla
也尝试了这个:
<form action="action('ExamenController@InsertUser')" method="post">
同样的错误。有谁知道这是如何工作的???? 我不懂Laravel 5.5的文档
但我知道这可以使用:
放入web.php(以前的route.php)<a class="btn btn-primary" href="{{action('ExamenController@InsertUser')}}">Save</a>
答案 0 :(得分:2)
正确的语法是这样做:
<form action="{{ action('ExamenController@InsertUser') }}" method="post">
docs中已经详细说明了这一点。
但是这个错误:
Action App \ Http \ Controllers \ ExamenController @ InsertUser
说该方法实际上并不存在于您的控制器中。
是的,您已使用Route::post('url','ExamenController@InsertUser');
为其定义了路线,但实际上是否已在ExamenController
内创建了此方法?
错误表明你没有,所以我会仔细检查它是否存在和/或拼写正确。
另一种选择,虽然如果InsertUser
方法不存在就无法解决问题,那就是实现你之后的目标:
<form action="{{ url('url') }}" method="post">
如果您想使用命名路由执行此操作,则可以通过为路由提供名称然后将其用于表单操作来执行此操作:
Route::post('url','ExamenController@InsertUser')->name('InsertUser');
<form action="{{ route('InsertUser') }}" method="post">
同样,docs中概述了这一点。
答案 1 :(得分:0)
使用刀片在路线或网址中合并是很方便的,Laravel有一个内置的方法来处理这个问题:
{!! Form::model($form, ['id' => 'my_form_id', 'method' => 'POST',
'action' => ['ExamenController@InsertUser', $form->id], 'class' => 'some-class'])!!}