我正在使用 Laravel v7,我有一个关于分页的问题。
到目前为止,我使用 2 个路由,第一个返回包含数据库中所有行的视图,第二个接收输入并返回该视图,其中包含按该输入值过滤的行。
但是我使用分页,在第二条路线上,当我尝试转到第二页时,它给了我一个错误:
Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
The GET method is not supported for this route. Supported methods: POST.
Run Code Online (Sandbox Code Playgroud)
我尝试将表单方法更改为 GET,但我需要令牌不会出现在页面 URL 上,除此之外,当我转到第二页时,它会再次返回所有行。
到目前为止,这是我的代码:
路线:
Route::get('concessions', 'ConcessionController@index')->name('concessions.index');
Route::post('concessions/search', 'ConcessionController@search')->name('concessions.search');
Run Code Online (Sandbox Code Playgroud)
控制器
class ConcessionController extends Controller
{
public function index()
{
$concessions = DB::table('concessions')->paginate(12);
return view('admin.concessions.index', compact('concessions'));
}
public function search(Request $request)
{
$name = $request->name;
$concessions = Concession::where('name', 'like', '%' . $name . '%')->paginate(12);
return view('admin.concessions.index', compact('concessions', 'name'));
}
}
Run Code Online (Sandbox Code Playgroud)
有办法做到吗?
我使用 Context API 来管理我的应用程序全局状态,我第一次尝试使用钩子来做到这一点……我在 async/await 方面遇到了一些麻烦,让我解释一下:
这是我的提供者:
const JobProvider = (props) => {
const [modalOpen, setModalOpen] = useState(false)
const [modalJob, setModalJob] = useState({})
const [jobs, setJobs] = useState([])
const [searchItem, setSearchItem] = useState('')
const [page, setPage] = useState(1)
const [now, setNow] = useState('')
const handleSearchChange = (e) => {
setSearchItem(e.target.value)
}
const getJob = id => {
// bla bla bla
return something;
};
// ...
}
Run Code Online (Sandbox Code Playgroud)
在该 Provider 中,我有一个函数nextPage(),它只更新页码并在此之后返回它……这是具有该函数的 Provider:
const JobProvider = (props) => {
const …Run Code Online (Sandbox Code Playgroud)