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

Форма

<input type="submit" name="button_1" value="1">
<input type="submit" name="button_2" value="2">
<input type="submit" name="button_3" value="3">
<!-- and more submit inputs -->

В контроллере я использую if else, чтобы проверить, какой ввод нажимается, например, я могу использовать это

if ($request->input('button_1'))
    {$message = '1'; // and more code
    }
elseif ($request->input('button_2'))
    {$message = '2'; // and more code
    }
elseif ($request->input('button_3'))
    {$message = '3'; // and more code
    }
// ...

Или я могу использовать это

if ($request->has('button_1')) {$message = '1';}
elseif ($request->has('button_2')) {$message = '2';}
elseif ($request->has('button_3')) {$message = '3';}
// ...

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

0
Ahmad Yousef 11 Ноя 2020 в 20:14

2 ответа

Лучший ответ

Вы можете включить true:

switch (true) {
  case $request->has('button_1'):
    // do something
    break;
  case $request->has('button_2'):
    // do something else
    break;
  case $request->has('button_3'):
    // do something 
    break;
}
1
DigitalDrifter 11 Ноя 2020 в 17:16

Вы можете установить имя для кнопок отправки и проверить отправленное значение с помощью переключателя:

<form action="" method="POST">
    <!-- fields -->
    <button type="submit" name="submit_btn" value="1">Save</button>
    <button type="submit" name="submit_btn" value="2">Preview</button>
    <button type="submit" name="submit_btn" value="2">Advanced edit</button>
</form>
switch ($request->input('submit_btn')) {
    case '1':
        // do something
        break;
    case '2':
        // do something
        break;
    case '3':
        // do something
        break;
}
1
Mustafa Poya 11 Ноя 2020 в 17:19