FuelPHP Bin
<?php // part of a controller /** * search action: search for sessions * * @param none * @throws none * @returns void */ public function action_search() { if ( ! $search = \Input::post('search', \Session::get_flash('sessions.search', false)) or empty($search)) { // bail out with an error if not found \Messages::warning(__('sessions.search.no-criteria')); } else { // store the search criteria in flash so we can recall it on the next page load \Session::set_flash('sessions.search', $search); } \Response::redirect('sessions/index'); } /** * search action: search for sessions * * @param none * @throws none * @returns void */ public function action_index($page = 1) { // check if we have a search value if ($search = \Session::get_flash('sessions.search')) { // reset it to make it survive the next page load \Session::set_flash('sessions.search', $search); } // construct the query $sessions = Model\Session::query() ->related('location') ->related('sessiontype'); // do we need to search? if ($search) { $sessions->where('code', 'LIKE', '%'.$search.'%') ->or_where('clientref', 'LIKE', '%'.$search.'%') ->or_where('remarks', 'LIKE', '%'.$search.'%') ->or_where('location.address', 'LIKE', '%'.$search.'%') ->or_where('location.city', 'LIKE', '%'.$search.'%') ->or_where('id', '=', $search) } // set pagination information \Pagination::instance()->uri_segment = 3; \Pagination::instance()->per_page = \Config::get('application.pagination', 20); \Pagination::instance()->total_items = $sessions->count(); \Pagination::instance()->pagination_url = \Uri::create('sessions/index'); // run the query $sessions = $sessions->rows_offset(\Pagination::instance()->offset) ->rows_limit(\Pagination::instance()->per_page) ->get(); // create the page \Theme::instance()->set_partial('content', 'sessions/index') ->set('sessions', $sessions); }