【发布时间】:2014-12-02 13:42:47
【问题描述】:
我有一个包含下拉列表和提交按钮的表单。像这样:
查看路径:webmasters/filters.blade.php
{{ Form::open() }}
{{ Form::select('filt', $Dropdown, 2) }}
{{ Form::Submit('Filter') }}
{{ Form::close() }}
还有一个控制器,它使用从数据库中查询的值填充下拉列表。像这样:
控制器名称:WebController.php
class WebController extends BaseController {
public function getFilters() {
$filters = Dropdown::getFilters();
return View::make('webmasters.filter',['Dropdown'=>$filters]);
}
public function postFilters() {
$filt = Input::get('name'); // getting the value of the select
$filters = Dropdown::getFilters();
$query = DB::table('webmasters.top_pages')->where('filter',$filt)->limit(20)->get();
return View::make('webmasters.filter', array('query'=>$query),['Dropdown'=>$filters]);
}
}
这是我的路线:
Route::resource('topPage', 'WebController@getFilters');
getFilters 是一种模型方法,用于查询数据库以获取下拉列表中的值。
编辑
我的视图文件:
{{ Form::open() }}
<p></p>
<table class='liste' style='margin-left: 0px;' cellpadding='5'>
{{ Form::select('name', $Dropdown) }}
<div>
{{ Form::Submit('Filter') }}
</div>
<tr>
<td style='background-color: #426bb3; color: white; font-weight: bold; width:16%;'>Datum</td>
<td align='left' style='background-color: #426bb3; color: white; font-weight: bold; width:12%;'>Page</td>
<td align='left' style='background-color: #426bb3; color: white; font-weight: bold; width:12%;'>Kategorie</td>
</tr>
@foreach($Webmasters as $topPages)
<tr>
<td> {{$topPages->date}} </td>
<td> {{$topPages->page}} </td>
<td> {{$topPages->category}} </td>
</tr>
@endforeach
</table><br>
{{ Form::close() }}
我想在提交表单时调用控制器方法,以便所述方法查询另一个数据库并根据下拉列表的选定值返回一个表(与下拉列表和提交按钮在同一页面上)。
由于使用 Form::post() 创建的默认表单使用 POST,我想我可以使用控制器中的第二种方法访问 select 的值 postFilters()。此方法继续使用该值作为 where 子句,因为它查询另一个 DB 并将结果传递到视图。 问题是,视图没有加载。我想我在路由上做错了什么? 有人可以帮忙吗?
【问题讨论】:
-
“视图未加载”是什么意思?你收到错误信息吗?一个空白屏幕?
-
嗨@lukasgeiter。感谢您昨天的回复。好吧,屏幕已经包含下拉和提交按钮,但我没有得到应该从第二个控制器方法传递的表。所以它本身并不是空白,只是没有改变。
-
你能告诉我们
filters.blade.php的其余部分吗?或者至少应该显示表格的部分...... -
我已经编辑了问题并包含了整个视图文件。
标签: php html mysql forms laravel