提问者:小点点

找不到Controller方法


在我的表单中,我有一个简单的更新表单,我可以从模型中填充输入标签。但在单击“提交”按钮发送输入值后,我出现以下错误:

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 

共1个答案

匿名用户

您在此处放置“命名路线”;

{{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')) 

路由名称可能存在问题,也可能仍然存在问题。