试图将GET或POST数据传递给Laravel评论应用程序

时间:2014-06-25 20:11:49

标签: php post laravel laravel-4 get

关注以下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));
    }

}

此应用程序的输入是一个表单,但我有兴趣记录来自其他来源的评论。谢谢。

1 个答案:

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