我正在尝试显示从表单提交的信息以创建留言板。我在laravel框架中使用php。我正在使用表单,记录和存储库。每当我尝试显示内容时,我收到以下错误Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException。
这是控制器:
/**
* Display a listing of the resource.
* GET /messages
*
* @return Response
*/
public function create()
{
return View::make('comments.create');
}
public function show($comment)
{
$message_id = $this->messageRepository->find($comment);
return View::make('comments.show')->with('comment', $message_id);
}
/**
* Store a newly created resource in storage.
* POST /messaages
*
* @return Response
*/
public function store()
{
$data = Input::all() ;
$this->messageForm->validate($data);
$messageRecord = new MessageRecord;
$messageRecord->comment = $data['comment'];
Return "Comment created";
}
}
以下是引起麻烦的观点:
<p>$comment</p>
我没有使用过一条路线,但我把它扔在了一起:
Route::resource('/message', 'MessageController');
答案 0 :(得分:1)
<强> [编辑:] 强>
如果您的store()
已被其他表单使用,但您还有另一个表单要发送POST数据,那么您应该为此声明另一个路由。像
Route::post('message/display', ['as' => 'message.display', 'uses' => 'MessageController@display');
很抱歉我以前的回答,show()
用于GET请求,因为您使用的是表单,除非您决定通过网址发送数据,否则您可能不需要它。我非常抱歉。
[编辑结束]
您收到该错误是因为您不允许在资源丰富的路由中使用display()
。相反,您必须使用store()
。由于您使用的是laravel资源路由,因此您应该遵循laravel的约定。在命令行中,运行
php artisan routes
你会得到这样的东西,
GET|HEAD message | message.index | MessageController@index
GET|HEAD message/create | message.create | MessageController@create
POST message | message.store | MessageController@store
GET|HEAD message/{message} | message.show | MessageController@show
GET|HEAD message/{message}/edit | message.edit | MessageController@edit
PUT message/{message} | message.update | MessageController@update
PATCH message/{message} | | MessageController@update
DELETE message/{message} | message.destroy | MessageController@destroy
这些是您应该使用的方法,路由名称及其相应的HTTP请求。
Check Laravel documentation for resourceful controller
快速查看,
index : Display a listing of the resource,
create : Show the form for creating a new resource,
store : Store a newly created resource in storage,
show : Display the specified resource,
edit : Show the form for editing the specified resource,
update : Update the specified resource in storage,
destroy : Remove the specified resource from storage
答案 1 :(得分:0)
对于显示此路线的路线,您似乎使用了不正确的动词。对于display
,您应该使用Route::get
,并且可能使用Route::post
。如果不是问题,请编辑您的问题并按照评论中的要求放置routes.php
。