Передача одной и той же переменной нескольким функциям контроллера Laravel - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь создать переменную, доступную двум различным функциям контроллера в laravel. Как мне это сделать. Первая функция получает значение от блейда, сохраняет его в переменной, а затем я хочу передать эту переменную со значением другой функции контроллера. Например, следующий блэйд передает obj_id контроллеру:

1) Мой клинок:

<!DOCTYPE html>
<html>
<meta charset="UTF-8">
<head>
<title>test</title>
</head>
<body>
    <form method='post' action="/hard">
        {{csrf_field()}}
        <br>
        <legend><i> Fill Data </i></legend>
        <br>
        <label>
            OBJECT ID:
            <input name='obj_id' type='text' minlength="8" required="" oninvalid="this.setCustomValidity('8 char at least')">
        </label>
        <br>

        <input type='submit' value="Submit!">
    </form>
    <br>
    <br>

</body>
</html>

2) Моя функция контроллера Roger правильно получает obj_id (я проверял od с помощью dd)

public function Roger(Request $p)
{
    $t = $p-> get('obj_id'); //I want $t to be global variable
    //dd($t);
}

3) и затем я хочу передать $ t функции Roger1 в том же контроллере

public function Roger1()
{
    dd($t);
}

Я пытался объявить $ t глобальным, но безуспешно. Я немного запутался с $ this и попробовал несколько комбинаций безуспешно.

Не могли бы вы помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

Вы можете использовать сеанс для хранения переменной

public function Roger(Request $p)
{
    $t = $p-> get('obj_id'); //I want $t to be global variable
    $p->session()->put('myvalue', $t);
}

public function Roger1(Request $p)
{
    $p->session()->get('myvalue);
}

https://laravel.com/docs/5.8/session#storing-data

0 голосов
/ 21 апреля 2019

Сценарий # 01

ЕСЛИ оба метода находятся в одном контроллере И ваш второй метод вызывается внутри первого метода (в одном и том же вызове), вы можете просто сделать:

class CoolController extends Controller {

    public $var;

    public function first_method(Request $value)
    {
        // Example 1: passing the value as a parameter:
        $this->second_method($value);

        // Example 2: passing the value through a class variable:
        $this->var = $value; // $value: 'some-text'
        $this->third_method();
    }

    public function second_method($value)
    {
        dd($value); // 'some-text'
    }

    public function third_method()
    {
        dd($this->var); // 'some-text';
    }

}

Сценарий # 02

Теперь, если вы хотите сделать запрос из вашего представления, чтобы установить значение в вашем первом методе, , а затем другой запрос, вызывающий ваш второй метод и получающий значение , которое было "сохранено" в первый звонок .. ну вы можете использовать любой из этих подходов. Зачем? потому что оба вызова находятся в разных жизненных циклах.

Когда первый вызов завершится, значение, назначенное в первом методе (сохраненное в памяти), будет стерто после завершения запроса. Вот почему ваш второй вызов получит значение null, если вы попытаетесь его использовать.

Для хранения временной переменной у вас есть несколько путей:

  • Сохраните его в базе данных.
  • Сохраните его в кеше.
  • Отправьте значение в качестве параметра запроса при выполнении второго вызова.
...