找不到Controller方法

时间:2014-03-07 07:08:07

标签: php laravel laravel-4

在我的表格中我有简单的更新表格,我可以填写模型的输入标签。但在点击提交按钮发送输入值后,我收到此错误:

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 个答案:

答案 0 :(得分:2)

你把'命名路线'放在这里;

{{Form::model( array('route'=>array('admin.profile.update',$profile->id), 'method'=>'post')) }}

但您的路线名称是“profile.update”(如您的工匠路线列表中所示) - 因此将其更改为

{{Form::model( array('route'=>array('profile.update',$profile->id), 'method'=>'post')) }}

编辑:我现在看到了问题。你已经完成了Form :: model()而不是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')) 

路线名称可能或可能仍然存在问题。