【问题标题】:Can not pass request parameter to controller from route in laravel 5无法从laravel 5中的路由将请求参数传递给控制器
【发布时间】:2016-02-11 15:29:03
【问题描述】:

我有

public function checkCookie(Request $request) {

// do something 
}

在我的控制器中,我试图从routes.php 调用它

Route::get('mypage',function(){
    $a=new App\Http\Controllers\indexController;
    $a->checkCookie();               
});

但我无法传递请求参数。我错过了什么?

【问题讨论】:

  • 这是一种错误的解决方法。试试 `Route::get('/mypage', 'indexController@checkCookie');
  • 主要目标是从方法中获取返回值
  • 更改路线后,请dd($request->all());查看所有请求数据。

标签: php laravel laravel-5 routes request


【解决方案1】:

这应该是这样的:

routes.php

<?php
Route::get('/mypage', 'IndexController@checkCookie');

控制器/IndexController.php

<?php 

namespace App\Http\Controllers;

use Request;

class IndexController extends Controller {

    public function checkCookie()
    {
        $data = Request::only('myvariable');
        dd($data);
    }
}

【讨论】:

  • 您还可以从 url 传递变量,例如:Route::get('/mypage/{id}', 'IndexController@checkCookie'); 并在您的控制器中将函数更改为 public function checkCookie($id) - 现在 $id 将可用。
【解决方案2】:

感谢帮助!!!最后我可以用

传递参数
Route::get('mypage',function(Request $request){
    $a=new App\Http\Controllers\indexController;
    $b=$a->checkCookie($request);
    if(!empty($b)){
        return view('mypage');
    }
});

并在我的 .env 中进行这些配置

DB_HOST=localhost
DB_DATABASE='db_name'
DB_USERNAME='root'
DB_PASSWORD=''
DB_PORT=3306

【讨论】:

  • 这完全是一个偏好问题,但通常更倾向于让 routes.php 尽可能简单,将控制器(和其他模型)留给编程逻辑。
猜你喜欢
  • 2017-01-12
  • 2012-09-20
  • 2016-05-16
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多