Laravel-将参数从web.php路由传递到控制器

时间:2019-02-15 21:24:25

标签: php laravel controller routes parameter-passing

我正在尝试将参数传递给我的UserController,但似乎无法找到执行此操作的方法。所有其他主题都提供了示例,其中已在url中定义了参数,但这不是我想要的。

$my_var = "some data";
Route::get('/login', 'Auth\UserController@login');

我的UserController中需要$ my_var

class UserController extends Controller
{

    public function login()
    {
        // Retreive $my_var somehow
        return view("login");
    }
}

对不起,我的英语不好,这不是我的母语

2 个答案:

答案 0 :(得分:1)

您做错了。那不是您使用MVC框架的方式,最好不要在web.php中定义仅用于您的路由和中间件的变量或常量。顺便说一句,如果您需要这样做,则有两种方法:

1)使用特征:

web.php

trait TestTrait {
    public static $my_var = 'some data';
}

Route::get(/login', 'Auth\UserController@login');

UserConroller.php

use TestTrait;

class UserController extends Controller
{
use TestTrait;

public function login()
{
    // You can retrieve it as a variable: $my_var
    echo TestTrait::$my_var;
}
}

2)使用常量而不是变量:

web.php

define('MY_VAR', 'some data');
Route::get('/login', 'Auth\UserController@login');

UserConroller.php

public function login()
{
    // You can retrieve it as a constant: MY_VAR
    echo MY_VAR;
}

答案 1 :(得分:0)

如果变量是硬编码的,为什么不将其声明为常量呢? 如果不需要其他逻辑,则可以通过路由文件传递该变量。

$my_var = "some data";
Route::get('/login', function(){
Return view('login', compact('my_var')):
});