这只是让我发疯。许多研究,测试,与工匠一起仔细检查了死记号,甚至安装了新的干净的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 的方法。
放在view1结果上的内容并不重要,我只是在尝试简单的{{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
只需将其累加起来,这样您就可以更好地帮助我解决问题,因为我认为这就是问题所在,而且我不知道要在我的行动表格中使用哪种方法。
答案 0 :(得分:0)
原来这是一个愚蠢的错误(像往常一样)。在我看来,我在下拉菜单中使用了以下代码:
<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>
然后控制器将获得该值。其余所有都已正确设置。 希望它对
中的新手有帮助