如何在php Laravel中调用Controller方法?

时间:2017-10-20 01:14:58

标签: php laravel

我有一个控制器,在其中我有几种方法。我的问题是如何将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> 

2 个答案:

答案 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'])!!}