控制器方法不被称为Laravel

时间:2014-12-02 13:42:47

标签: php html mysql forms laravel

我有一个包含下拉列表和提交按钮的表单。像这样:

查看路径:webmasters / filters.blade.php

 {{ Form::open() }}
  {{ Form::select('filt', $Dropdown, 2) }}
  {{ Form::Submit('Filter') }}
 {{ Form::close() }}

一个控制器,使用从数据库中查询的值填充Dropdown。像这样:

控制器名称: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是一种模型方法,可以在DB中查询进入下拉列表的值。

修改

我的观看文件:

 {{ 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() }} 

我想在提交表单时调用控制器方法,以便所述方法查询另一个数据库并根据下拉列表的选定值返回一个表(与下拉列表和提交按钮位于同一页面上)。 p>

由于使用 Form :: post()创建的默认表单正在使用POST,我想我可以使用控制器中的第二种方法访问select的值 postFilters()< / strong>即可。此方法继续使用该值作为where子句,因为它查询anther DB并将结果传递给View。 问题是,视图没有加载。我想我在路由上做错了什么? 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您的控制器未将视图传递给视图。您注入query,视图需要$Webmasters。另外,添加了Dropdown的第二个数组将无效。这应该可以解决问题:

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', ['Webmasters'=>$query, 'Dropdown'=>$filters]);
}

修改

此外,您正在使用Route::controller控制器功能。你必须传递控制器类。

Route::controller('top_page', 'WebController');

现在使用top_page/filters作为访问表单的URL非常重要。 (并张贴)