我所有控制器的前三个方法都运行良好,但是当我添加第四个方法时,这个方法不起作用(不包括构造方法)并给我一个空白页面,其中包含控制器动作的URL。登记/> 我的控制器类:
class StoreController extends BaseController{
public function __construct(){
parent::__construct();
$this->beforeFilter('csrf', ['on'=>'post']);
}
public function getIndex(){
return View::make('store.index', ['products'=>Product::take(4)->orderBy('created_at','DESC')->get()]);
}
public function getView($id){
return View::make('store.view', ['product'=>Product::find($id)]);
}
public function getCategory($cat_id){
return View::make('store.category', [
'products'=>Product::where('category_id','=',$cat_id)->paginate(6),
'category'=>Category::find($cat_id)]);
}
public function getSearch(){
$keyword=Input::get('keyword');
return View::make('store.search', [
'products'=>Product::where('title','LIKE','%'.$keyword.'%')->get(),
'keyword'=>$keyword]);
}
}
在我的route.php文件中:
Route::controller('store', 'Storecontroller');
行动的触发器形式是:
<div id="search-form">
{{ Form::open(['url'=>'store/search', 'method'=>'get']) }}
{{ Form::text('keyword', null, ['placeholder'=>'Search by keyword', 'class'=>'search']) }}
{{ Form::submit('Search', ['class'=>'search submit']) }}
{{ Form::close() }}
正如我所说的getSearch方法不起作用,我给了一个空白页面,其中包含动作的url(不是返回的视图)
感谢
答案 0 :(得分:0)
由于页面为空白,请确保您的应用配置中的debug设置为true
(应该是最顶层的设置,最好是local dir })。这意味着当发生错误时,您将看到一个错误页面,其中包含详细的堆栈跟踪和错误消息,使您可以更轻松地调试应用程序。
确保视图store.search
存在,命名正确(检查拼写错误)并包含您需要显示$products
的html / php。
接下来,您有两种可能性:
设置keyword
输入的默认值
// For example:
Input::get('keyword', 'default')
检查是否有指定的关键字
// For example:
if (Input::has('keyword')) {...} else {...}
作为旁注: 您不应该像在此处一样在数组内执行(繁重)任务。将它们放在变量中,并将它们包含在视图数组中,就像使用关键字变量一样。您的代码也将更易读和可维护。关于这一点还有很多,但这就是重点。
如果这有助于你,请告诉我。