Контроллер метод не существует. Но на самом деле существует. Не передать значение с запросом ни
Это просто сводит меня с ума. Много исследований, тестирований, двойной проверки поворотов с ремесленником и даже новой чистой установки 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>
И контроллер получит значение. Все остальное настроено правильно. Надеюсь, это поможет другому новичку в