Отслеживание переменной от одного контроллера к другому - PullRequest
0 голосов
/ 02 августа 2020

Заранее благодарю вас за помощь.

Я сейчас изучаю Laravel и, похоже, не могу понять проблему.

Я пытаюсь создать предложение и счет-фактура для компании, у которой есть дилеры, продающие их продукцию.

Итак, у меня есть продавец, который создал клиента с помощью формы. Введенные данные хранятся в таблице клиентов.

Schema::create('clients', function (Blueprint $table) {
        $table->id();
        $table->unsignedBigInteger('user_id');
        $table->unsignedBigInteger('system_id');
        $table->string('name')->nullable();
        $table->string('contact')->nullable();
        $table->string('number')->nullable();
        $table->string('email')->nullable();

Часть формы, в которой продавец выбирает «систему», в которой он хочет процитировать клиента, это system_id выше.

user_id выше относится только к продавцу, который создал клиента.

Вот мои продукты migration

Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->integer('group');
        $table->string('code');
        $table->string('name');
        $table->double('price');
        $table->timestamps();
    });

Клиент успешно сохранен. После этого я использую оператор if, чтобы определить, какой route следовать для настройки системы.

if ($data['system_id'] == 1){
      return redirect(route('system.824'))->with('success', 'Customer details have been saved.');
  }elseif($data['system_id'] == 2){
      return redirect(route('system.32'))->with('success', 'Customer details have been saved.');
  }elseif ($data['system_id']==3){
      return redirect(route('system.500'))->with('success', 'Customer details have        been saved.');
  }

routes выше переходит к определенной функции внутри моего SystemsController, здесь я получаю требуемые " группы », как указано выше в моей миграции products.

Эти группы используются для настройки systems.

После настройки системы данные отправляются обратно в SystemController для мне для выполнения необходимой проверки и дальнейшего logi c для конфигурации на полученном входе.

После настройки системы он затем отправляется на SystemsController, где мне нужно выполнить несколько logi c на основе ввода формы.

Моя проблема заключается в доступе к client_id в SystemsController, поэтому я могу сохранить полученные данные в созданной мной сводной таблице.

client_id hasMany products products hasMany clients

Мне нужно использовать сводную таблицу, чтобы отслеживать, что было указано в конфигурации для этого клиента. Сводная таблица будет содержать client_id и product_id с последним столбцом для сохранения количества.

Что мне здесь не хватает?

Еще раз спасибо.

1 Ответ

0 голосов
/ 03 августа 2020

Как упоминалось в моих комментариях, вы можете отправить больше данных внутри with либо в виде массива, либо в виде объединения with s.

return redirect(route('system.32'))->with('success', 'Customer details have been saved.')->with('user_id', $userId);

OR

return redirect(route('system.32'))->with(['success' => 'success message', 'user_id' => $userId]);

Ссылаясь на ваш комментарий, если вы хотите передавать данные внутри действия маршрута, вам потребуется настроить свой маршрут следующим образом:

Route::get('path/to/your/route/system_input/{infoId}', 'SystemController@getInput')->name('system.input')

Метод в SystemController должен принимать параметр.

public function getInput($infoId) { 

Затем в вашем маршруте перенаправления:

return redirect(route('system.input', ['infoId' => $info->id]) );

Теперь у вас будет доступ к infoId в вашем методе getInput через $infoId.

...