Laravel - передача параметров из маршрутов web.php в контроллер - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь передать параметр в свой UserController, но я не могу найти способ сделать это.Во всех других разделах приводятся примеры, где параметр уже определен в URL, но это не то, что я хочу.

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

Мне нужен $ my_var в моем UserController

class UserController extends Controller
{

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

Извините за мойплохой английский, это не мой родной язык

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Вы делаете это неправильно.Это не то, как вы работаете с инфраструктурой 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;
}
0 голосов
/ 16 февраля 2019

Если переменная жестко закодирована, почему бы не указать ее как константу?Если никакой другой логики не требуется, переменная может быть передана через файл маршрутов.

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