关注以下GitHub应用程序的scotch.io教程: https://github.com/scotch-io/laravel-angular-comment-app
完成教程后,好奇是否可以通过URL将信息传递给预期的Laravel应用程序。我在网站上问过这个问题,但回复速度最慢。
这是我的路线信息......
URI: POST api/comments
Name: api.comments.store
Action: CommentController@store
这是我的CommentController代码:
<?php
// app/controllers/CommentController.php
class CommentController extends \BaseController {
/**
* Send back all comments as JSON
*
* @return Response
*/
public function index()
{
return Response::json(Comment::get());
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
Comment::create(array(
'author' => Input::get('author'),
'text' => Input::get('text')
));
return Response::json(array('success' => true));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
Comment::destroy($id);
return Response::json(array('success' => true));
}
}
此应用程序的输入是一个表单,但我有兴趣记录来自其他来源的评论。谢谢。
答案 0 :(得分:1)
您可以使用帖子数据提交php
请求,使用POST
中的cURL等任何库来执行此操作。但在这种情况下,请确保为csrf
方法的外部请求禁用store
过滤器,或者生成持久令牌并将其保留到巡视端(某处,可能暂时在数据库中,直到请求为止)如果请求带有您生成的令牌,那么您可以检查它以进行验证(如果需要)。因为如果您在该方法上启用csrf
并且请求是在没有令牌的情况下从外部资源发出的(Laravel在使用Form
类打开表单时自动为表单生成令牌),那么请求无法达到该方法。
cURL
使用POST
方法查询帖子数据的示例:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"url of laravel site");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('postvar1' => 'value1')));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
curl_close ($ch);
现在检查回复($server_output
)。如果您需要传递csrf
令牌,则需要将其添加到array
http_build_query
内。这只是一个基本的想法,研究更多。您也可以查看this answer。