поэтому это мой контроллер:
class PostsController extends BaseController { public function postSearch() { $q = Input::get('username'); $posts = DB::table('users')->whereRaw( "MATCH(username) AGAINST(? IN BOOLEAN MODE)", array($q) )->get(); return View::make('posts.index', compact('posts')); } }
и мой маршрут:
Route::get('posts/index', function() { return View::make('posts/index'); }); Route::post( ''posts/index', array( 'as' => 'posts.index', 'uses' => 'PostsController@postSearch' ) );
и мой html:
<div class="search"> {{ Form::model(null, array('route' => array('posts.index'))) }} {{ Form::text('username', null, array( 'placeholder' => 'Search query...' )) }} {{ Form::submit('Search') }} {{ Form::close() }} </div>
проблема в том, что он дает мне ошибку:
MethodNotAllowedHttpException
поэтому я не был для пользователей, чтобы иметь возможность искать на индексной странице и давать им результат на странице с неуверенностью в таблице, как я могу сделать результат и что это за ошибка?
Вы делаете все хорошо, но в файле маршрута ваш класс называется PostsController
но фактическое имя класса контроллера – postController
поэтому он говорит, что PostsController
не найден.
Маршрут:
Route::get('posts/index', function() { return View::make('posts/index'); }); Route::post('posts/index', array('as' => 'posts.index','uses' => 'PostsController@postSearch'));
контроллер
class PostsController extends BaseController { public function postSearch() { $q = Input::get('username'); $posts = DB::table('users')->whereRaw( "MATCH(username) AGAINST(? IN BOOLEAN MODE)", array($q) )->get(); return View::make('posts.index', compact('posts')); } }
Посмотреть
<div class="search"> {{ Form::open(array('route' => 'post.index', 'method' => 'POST', 'role' => 'search')) }} {{ Form::text('username',null, array( 'placeholder' => 'Search query...' )) }} {{ Form::submit('Search') }} {{ Form::close() }} </div> @if(isset($posts)) @foreach($posts as $post) {{$post->id}} @endforeach @endif