Контроллер метод не существует.Но на самом деле существует.Не передать значение с запросом ни - PullRequest
0 голосов
/ 21 декабря 2018

Это просто сводит меня с ума.Много исследований, тестирований, двойной проверки поворотов с ремесленником и даже новой чистой установки 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 Ответ

0 голосов
/ 10 января 2019

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

<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>

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

Laravel 5.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...