我安装了laravelcollective并尝试运行以下代码
{!! Form::open(['action' => 'ProductController@store','method' => 'POST']) !!}
<div class="form-group">
{{Form::label('title','Title')}}
{{Form::text('title',['class' => 'form-control', 'placeholder' => 'Title'])}}
</div>
{!! Form::close() !!}
我收到此错误
AppHttpControllersProductController@store not defined. (View: /Applications/MAMP/htdocs/lsapp/resources/views/product/create.blade.php)
当我运行php artisan route:list时,我看到:
| | GET|HEAD | api/user | | Closure | api,auth:api |
| | POST | events | events.store | AppHttpControllerseventcontroller@store | web |
| | GET|HEAD | events | events.index | AppHttpControllerseventcontroller@index | web |
| | GET|HEAD | events/create | events.create | AppHttpControllerseventcontroller@create | web |
| | PUT|PATCH | events/{event} | events.update | AppHttpControllerseventcontroller@update | web |
| | GET|HEAD | events/{event} | events.show | AppHttpControllerseventcontroller@show | web |
| | DELETE | events/{event} | events.destroy | AppHttpControllerseventcontroller@destroy | web |
| | GET|HEAD | events/{event}/edit | events.edit | AppHttpControllerseventcontroller@edit | web |
| | GET|HEAD | home | home | AppHttpControllersHomeController@index | web,auth |
| | POST | login | | AppHttpControllersAuthLoginController@login | web,guest |
| | GET|HEAD | login | login | AppHttpControllersAuthLoginController@showLoginForm | web,guest |
| | POST | logout | logout | AppHttpControllersAuthLoginController@logout | web |
| | POST | password/email | password.email | AppHttpControllersAuthForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | AppHttpControllersAuthForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | | AppHttpControllersAuthResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | AppHttpControllersAuthResetPasswordController@showResetForm | web,guest |
| | POST | register | | AppHttpControllersAuthRegisterController@register | web,guest |
| | GET|HEAD | register | register | AppHttpControllersAuthRegisterController@showRegistra
对于最佳实践和维护代码,我希望遵循我的建议:
1)转到路由/网络.php并将名称添加到ProductController@store
方法中,如下所示:
Route::post('','ProductController@store')->name('products.store');
2)转到您的create.blade.php
文件并像这样更改它:
{!! Form::open(array( 'route'=>'products.store')) !!}
<div class="form-group">
{{Form::label('title','Title')}}
{{Form::text('title',['class' => 'form-control', 'placeholder' => 'Title'])}}
</div>
当您将 Laravel 集体表单与操作一起使用时,您不会将该方法声明为第二个参数,这仅当您声明一个 url 时,您才将其用作路由参数,通常在 url 中需要 ID 时添加 ID。首先,尝试删除'method' => 'POST'
部分,看看是否有效。
是否已在 routes/web.php 文件中创建了资源控制器或单个路由?
您在这里有几个选项:
对于表单::打开,您可以使用操作、路由或 URL
行动:
{!! Form::open(['action' => 'ProductController@store']) !!}
// By default, a POST method will be assumed
<div class="form-group">
{{Form::label('title','Title')}}
{{Form::text('title',['class' => 'form-control', 'placeholder' => 'Title'])}}
</div>
// If you use the Form::open method with POST, PUT or DELETE the CSRF token will be added to your forms as a hidden field automatically.
{!! Form::close() !!}
路线:
首先在您的路线/网络.php文件中命名您的路线:
Route::post('/productURL', 'ProductController@store')->name('productRouteName');
然后打开表单:
{!! Form::open(['route' => 'productRouteName'] !!}
网址:
只需从上面创建的路由调用 url。
{!! Form::open(['url' => 'productURL'] !!}