【问题标题】:Laravel new method POST in addition to resourcesLaravel 新方法 POST 除了资源
【发布时间】:2015-11-02 22:01:41
【问题描述】:

我有资源:

Route::resource('star', 'StarController');

我想像这样添加一个新方法 POST:

Route::post('star/addPic', array('as' => 'addpic', 'uses' => 'StarController@addPic') );
Route::resource('star', 'StarController');

我尝试了多个这样的方法定义:

 public function addPic($id)
 {
     return 'test';
 }

 public function addPic(Request $request)
 {
     return 'test';
 }

但无论如何,当我向 star/addPic 发出 POST 请求时,我得到了一个错误:

No query results for model [App\Star].

我尝试了 GET 中的方法并且有效:

Route::get('star/addPic', array('as' => 'addpic', 'uses' => 'StarController@addPic') );
Route::resource('star', 'StarController');

但不是在 POST 中,那不起作用...

希望你能帮忙

编辑:

在尝试您的建议时,我认为该请求有效,但出现了一个新错误:

TokenMismatchException in compiled.php line 2710:

【问题讨论】:

  • addPic 是否被调用?您收到的错误是 Eloquent 查询的结果,并且肯定不是发布的 addPic 方法所做的。
  • 不,addPic 不是调用。例如,当我尝试使用 requestmaker.com 发出请求时,我收到错误 HTTP/1.1 500 Internal Server Error .......跨度>
  • 然后检查您的日志文件,看看为什么会出现错误。或者在您的 .env 文件中启用调试 - 然后应在浏览器中显示异常详细信息
  • 调试已激活,错误是我在帖子中写的:“模型 [App\Star] 没有查询结果。”
  • 您的 routes.php 中的路线顺序是否与您发布的顺序相同?当你得到错误时,你看到它是从哪里抛出的吗?

标签: php laravel post routes laravel-5


【解决方案1】:

解决方案:

好的,我设法做到了:

我的路线是这样的:

Route::post('star/addPic', array('as' => 'addpic', 'uses' => 'StarController@addPic') );
Route::resource('star', 'StarController');

控制器看起来像这样:

public function addPic(Request $request, $id)

POST 中的调用需要一个令牌(我也忘记了):

jQuery.ajax({
            type: "post",
            url: "/laravelProject/star/addPic",
            data: {
                "_token" : jQuery('#token').val(),
                "urlString" : elmt.src            
            }
        });

这行得通;)

【讨论】:

    【解决方案2】:

    但是,你添加了id?

    Route::post('star/addPic/{id}', array('as' => 'addpic', 'uses' => 'StarController@addPic')
    

    这将适用于

    public function addPic($id){}
    

    【讨论】:

    • 我试过了,还是不行。而且我不明白为什么我应该将 {id} 放在 POST 方法中。如果我想要一个 GET 方法,我应该输入 {id} 吗?
    • 使用id查找要修改的模型,可以使用public function (Request $request, $id) {}
    • 好的,所以,我设置了路由 post('star/addPic/{id})) ,我设置了方法 public function (Request $request, $id) ,然后我怎么称呼它?因为我做不到……我试着用{来打电话!! link_to_route('addpic', '测试按钮', [$picture], ['class' => 'btn btn-info pull-right']) !!}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2015-12-03
    • 2019-01-10
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多