Задать вопрос
slower
@slower

Как передать переменную из одной функции контроллера в другую и вызвать из файла с роутами?

Я хочу передать переменную из одной публичной функции в другую (в классе контроллера) и вызвать эту функцию (с переданной переменной) в файле routes, чтобы там использовать эту переменную в качестве url'a.

Итак, у меня есть myController, и я хочу передать $Hash из первой функции во вторую. Я также хочу сделать маршрут, где я буду использовать переменную функции second$Hash в качестве url-адреса.

Вот, что я сделал, но это не работает.
(Во-перевых, у меня есть ошибка:
Too few arguments to function App\\Http\\Controllers\\myController::second(), 1 passed and exactly 2 expected

Ну и во-вторых, я не очень уверен насчет того, что я написал в роутах

Controller

class myController extends Controller
{
    public function first(Request $request, $Hash)
    {
            $requested_email = $request->email;
            $getUserByEmail = DB::table('users')->where('email', $requested_email)->first();
            $Hash = Crypt::encrypt($getUserByEmail->password);

            echo $Hash;
    }

    public function second($Hash)
    {
        echo $Hash;
    }
    
}

Routes

Route::get('{Hash}', 'myController@second');

PS: Конечно же у меня есть route::post('url', 'controller@function'), чтобы получить e-mail пользователя (а => и все его данные из db)
  • Вопрос задан
  • 1077 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
photozoom
@photozoom
А если заранее объявить переменную в контроллере перед функциями?
private $Hash = '';

а потом в первой функции:
public function first(Request $request, $Hash)
    {
            $requested_email = $request->email;
            $getUserByEmail = DB::table('users')->where('email', $requested_email)->first();
            $this->Hash = Crypt::encrypt($getUserByEmail->password);

            echo $this->Hash;
    }

а во втрой:
public function second($this->Hash)
    {
        echo $this->Hash;
    }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы