我目前正在学习laravel和我的小项目,现在我遇到了一些小问题。
我正在尝试在url中处理php输入,即http://example.com/?page=post&id=1
我目前在我的控制器中有post.blade.php
public function post($Request $request)
{
$page = $request->input('page');
$id_rilisan = $request->input('id');
$post = Rilisan::where('id_rilisan', '=', $id_rilisan)->first();
if($post = null)
{
return view('errors.404');
}
return view('html.post')
->with('post', $post);
}
这是控制器
Route::get('/', 'TestController@index');
Route::get('/{query}', 'TestController@post' );
如何处理要输出到控制器的php输入?我现在很困惑,我为Route :: get
尝试了其他几种方法答案 0 :(得分:1)
此路线Route::get('/', 'TestController@index')
将用户引导至index
路线。因此,如果您无法更改网址结构并且必须使用此结构,则应在index
路由中获取此类网址的参数:
public function index()
{
$page = request('page');
$id = request('id');
答案 1 :(得分:0)
您可以在控制器上使用它作为参数:-)请参阅此答案:https://laravel.io/forum/07-26-2014-routing-passing-parameters-to-controller
例如路由中的查询参数将是控制器方法中的$ query参数: - )
所以这样:
Route::get('/{query}', 'TestController@post' );
//controller function
public function controllerfunc($query){}
答案 2 :(得分:0)
为什么需要在url中使用查询参数。您只需使用此结构http://example.com/posts/1
然后您的路线将如下所示:
Route::get('/posts/{post}', 'PostsController@show');
您可以在show方法中立即访问Post
模型。
例如:
public function show(Post $post) {
return view('html.post', compact('post'));
}
看看你的代码现在有多小。