有 Laravel 8 路由和控制器问题
Posted
技术标签:
【中文标题】有 Laravel 8 路由和控制器问题【英文标题】:Having Laravel 8 routing and controller issue 【发布时间】:2021-04-09 13:44:30 【问题描述】:遇到 Laravel 8 路由和控制器问题
我对 laravel8 有点陌生并且掌握了它,我正在构建一个新闻门户作为一个项目并同时学习。
在主索引页面上,我喜欢显示一些数据,例如帖子和类别等,其中数据来自数据库中的不同表,来自相同的控制器,但不同的方法到达相同的路由。 所以我有点卡在这里,我遇到的问题是它不起作用 这是我的代码
这里是路线
// main Index Page
Route::get('/','App\Http\Controllers\Home_pageController@categories);
// Index Latest Posts
Route::get('/','App\Http\Controllers\Home_pageController@homePageLatestPosts');
控制器中的方法 这是在侧边栏中显示最新帖子的方法
// Display latest limit by 10 the posts on home page
public function homePageLatestPosts()
// $all_posts = Blogs::all();
$latest_posts = DB::table('blogs')->join('users', 'users.id', '=', 'blogs.added_by')->select('users.*','blogs.*')->orderBy('blogs.created_at', 'desc')->paginate(5);
// dd($latest_posts);
return view('welcome' , ['latest_posts'=>$latest_posts]);
// Show Categories
public function categories()
$categories = DB::table('categories')->orderBy('category_name', 'desc')->get();
// dd($categories);
return view('welcome',['cats'=>$categories]);
我想知道问题是什么,是否有解决方案,以及我采取的方法是否正确
我用谷歌搜索了一个解决方案,但无法解决它
提前致谢
【问题讨论】:
您不能像这样为单个路由指向两个方法。您必须在路由中添加参数以区分要返回的值并在控制器方法中添加条件以返回值基于路由参数。 我建议您通读Laravel documentation 和一些tutorials,因为您的代码表明您需要复习基础知识。 【参考方案1】:感谢您的回复。
我通过一种方法从数据库中获取数据并将它们传递给视图进行显示。
use App\Models\Blog;
use App\Models\User;
use App\Models\Categories;
public function welcome()
// Latest Posts
$latest_posts = DB::table('blogs')->join('users', 'users.id', '=', 'blogs.added_by')->select('users.*','blogs.*')->orderBy('blogs.created_at', 'desc')->paginate(10);
// Home Page Categories
$categories = DB::table('categories')->orderBy('category_name', 'desc')->get();
// Return
return view('welcome' , [ 'categories'=>$categories,'latest_posts'=>$latest_posts]);
【讨论】:
以上是关于有 Laravel 8 路由和控制器问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在控制器laravel 8中通过ajax传递路由链接和图像存储链接
在 PHPUnit 中调用路由时如何在 Laravel 8 中模拟 Eloquent 模型