在我的表单中,我有一个简单的更新表单,我可以从模型中填充输入标签。但在单击“提交”按钮发送输入值后,我出现以下错误:
Controller method not found.
我的表格:
{{Form::model( array('route'=>array('admin.profile.update',$profile->id), 'method'=>'post')) }}
我的路线:
Route::group(array('prefix'=> 'admin' ,'before'=>'auth'), function(){
Route::controller('profile', 'profileController', array('getIndex'=>'profile.index', 'postUpdate'=>'profile.update'));
});
我的控制器:
class ProfileController extends \BaseController {
protected $layout = 'layouts.admin.main';
function __construct() {
$this->beforeFilter('auth', array('except' => array('getIndex', 'postUpdate')));
$this->beforeFilter('csrf', array('on' => 'post'));
}
public function getIndex()
{
}
public function postUpdate($id)
{
}
}
html的结果:
<form accept-charset="UTF-8" action="http://localhost/alachiq/admin/profile/index" method="POST"><input type="hidden" value="fDhe6m2qHh7NOERQaGvwDPJwCkbGTIRr56IBHseI" name="_token">
形式的作用是:
http://localhost/alachiq/admin/profile/index
那必须是:
http://localhost/alachiq/admin/profile/update
工匠路线:
GET admin/profile/index/{one?}/{two?}/{three?}/{four?}/{five?} | profile.index | profileController@getIndex
GET admin/profile | | profileController@getIndex
POST admin/profile/update/{one?}/{two?}/{three?}/{four?}/{five?} | profile.update | profileController@postUpdate
您在此处放置“命名路线”;
{{Form::model( array('route'=>array('admin.profile.update',$profile->id), 'method'=>'post')) }}
但是您的路由名称是“profile.update”(如artisan路由列表中所示),因此将其更改为
{{Form::model( array('route'=>array('profile.update',$profile->id), 'method'=>'post')) }}
编辑:我现在看到问题了。您已经完成了Form::()而不是Form::open(),但是实际上还没有将模型传递给表单。要么你需要像这样传入你的模型:
{{Form::model($model, array('route'=>array('profile.update',$profile->id), 'method'=>'post'))
或者将表单更改为如下方式打开:
{{Form::open( array('route'=>array('profile.update',$profile->id), 'method'=>'post'))
路由名称可能存在问题,也可能仍然存在问题。