Контроллер метод не существует. Но на самом деле существует. Не передать значение с запросом ни

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

Мой маршрут web.php

Route::get('/view1', function () {
    return view('view1');
});

Route::post('/view1results', [
    "uses" => 'MyController@MyMethod',
    "as" => 'MySearch'
]);

Route::get('/', function () {
    return view('welcome');
});

Мое мнение1:

  <label class="myfilters">filters:</label>
    <form action="{{ route('MySearch') }}" method="POST">
    {{ csrf_field() }}
    <select class="myfilters" id="filter1" name="filter1">
    <option value=""> -- Select Something --</option>
        <option value="">  option 1 </option>
        <option value="">  option 2 </option>
    </select>
    <input type="submit"></input>
</form>

Мой контроллер

<?php
use Input;
use app\SubSectorsBPIsData;
use App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

    class SubSectorsBPIsDataController extends Controller
    {
        public function MyMethod(Request $request)
        {
            $valueselected= $request->input('filter1');
             return view('view1results', ['filter1' => $valueselected]);
        }
     }

Ошибка: метод BadMethodCallException App\Http\Controllers\MyController::MyMethod не существует. И, как вы можете видеть, метод называется: MyMethod есть. Неважно, что я положил на мои view1results, я просто пытался простой {{echo $valueselected}};

Также попытался добавить другое представление для передачи данных с моего контроллера. В моем web.php:

Route::get('/viewresults2', function () {
    return view('viewresults2');
});

А потом в моем контроллере

return view('viewresults2', ['filter1' => $valueselected]);

Это дает мне пустую страницу. Даже если при таком другом подходе он распознает метод, он теперь возвращает любое представление или значение: если я просто обошел представление и попытался: return $selectedTrend; Все еще получите пустую страницу.

Он не распознает метод и не передает никакого значения из выбора. Что происходит, пожалуйста?:(

Обновить
Еще одна вещь: мой сайт имеет файловую структуру:

www.mydomain.net/software/public/view1

И после отправки формы перенаправляет на:

www.mydomain.net/software/public/view1results

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

1 ответ

Решение

Оказывается, это была глупая ошибка (как всегда). На мой взгляд, у меня был этот код для выпадающего списка:

<select class="myfilters" id="filter1" name="filter1">
    <option value=""> -- Select Something --</option>
        <option value="">  option 1 </option>
        <option value="">  option 2 </option>
    </select>

Обратите внимание на <option value=""> не имеет никакого значения, и контроллер должен знать, какое значение получить. Так что сделайте это вместо этого:

<option value="option1">  option1 </option>
<option value="option2">  opion2 </option>

И контроллер получит значение. Все остальное настроено правильно. Надеюсь, это поможет другому новичку в

Ларавел 5.7

Другие вопросы по тегам